继承——Person为父类,Teacher和Student都继承Person

一、题目

  1. 按照要求完成以下操作。
    1. 创建Person,Teacher,Student类
      其中,Person为父类,Teacher和Student都继承Person
      Person中有属性:String name,int age(自己思考访问控制修饰符)
      在Person中写出无参构造方法Person(),有参构造方法Person(String name,int age)
      在Person中定义方法:showMessage(),用于展示人的信息,打印输出“展示某人的信息”
  2. 在Teacher类中定义私有的属性:工号teacherId
    定义以下构造方法:
    1.无参构造方法 Teacher()
    2.有参构造方法Teacher(String name,int age,Int teacherId)
    该构造方法中调用父类的2个参数的构造方法
    在Teachar中重写方法showMessage():在方法体中输出“老师的信息是:姓名:xx,年龄:xx,工号:xx”
  3. 在Student类中定义私有的属性:学号schoolId
    定义以下构造方法:
    1.无参构造方法 Student()
    2.有参构造方法Student(String name,int age,Int teacherId)
    该构造方法中调用父类的2个参数的构造方法
    在Student中重写方法showMessage():
    在方法体中输出“学生的信息是:姓名:xx,年龄:xx,学号:xx”
    二、实现代码
    第一种
    1.Student类
package homework;

public class Student extends Person {
	public String name;
	public int age;
	public int schoolId;
	public Student() {
		
	}

	public  Student(String name,int age,int schoolId) {
		this.name=name;
		this.age=age;
		this.schoolId=schoolId;
	}	
	public void showMessage() {//重写方法
		System.out.printf("学生的信息是:姓名:"+name+" 年龄:"+age+" 学号:"+schoolId+"\n");
	}

}

2.Teacher类

package homework;

public class Teacher extends Person {
	
	public int teacherId;
	public String name;
	public int age;
public Teacher() {
	
}

public  Teacher(String name,int age,int teacherId) {
	this.name=name;
	this.age=age;
	this.teacherId=teacherId;
}	
public void showMessage() {//重写方法
	System.out.printf("老师的信息是:姓名:"+name+" 年龄:"+age+" 工号:"+teacherId);
}
}

3.Person类

package homework;

public class Person {
	public static void main(String[] args) {
		Student s=new Student();
		s.schoolId=10;
		s.age=20;
		s.name="admin";
		s.showMessage();
		Teacher t=new Teacher();
		t.age=28;
		t.name="ldk";
		t.teacherId=12;
		t.showMessage();
	}
public void showMessage() {
	System.out.println("展示某人信息");
}
}

截图:
在这里插入图片描述
第二种
Student类

package homework;

public class Student extends Person {
	
	public int schoolId;
	public Student() {
		
	}

	public  Student(String name,int age,int schoolId) {
		super(name,age);
		this.schoolId=schoolId;
	}	
	public void showMessage() {
		System.out.printf("学生的信息是:姓名:"+name+" 年龄:"+age+" 学号:"+schoolId+"\n");
	}

}

Teacher类

package homework;

public class Teacher extends Person {
	
	public int teacherId;
	
public Teacher() {//无参构造法
	
}

public  Teacher(String name,int age,int teacherId) {//有参构造
	super(name,age);
	this.teacherId=teacherId;
}	
public void showMessage() {
	System.out.printf("老师的信息是:姓名:"+name+" 年龄:"+age+" 工号:"+teacherId+"\n");
}
}

Person类

package homework;

public class Person {
	public String name;
	public int age;
	
	public Person(){
		
	}
	public Person(String name,int age) {
		this.name=name;
		this.age=age;
	}
public void showMessage() {
	System.out.println("展示某人信息");
}
}

Test类

package homework;

public class Test {
	public static void main(String[] args) {
		Teacher t=new Teacher("ldk",21,10);
		t.showMessage();
		Student s=new Student("xd",17,1002);
		s.showMessage();
	}

}

截图:
在这里插入图片描述

三、总结
还是存在问题,对于无参,有参的构造方法,父类与子类之间的继承,子类中的方法重写。
super(参数)的使用:调用父类的有参构造方法
//这句代码必须写在第一行

  • 29
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是用 Java 定义抽象 `Person`、派生 `Student` 和 `Teacher` 的代码实现: ```java // 定义抽象 Person public abstract class Person { protected String name; // 姓名 protected int age; // 年龄 // 构造方法 public Person(String name, int age) { this.name = name; this.age = age; } // 定义抽象方法 sayHello public abstract void sayHello(); } // 定义派生 Student public class Student extends Person { private String school; // 学校 // 构造方法 public Student(String name, int age, String school) { super(name, age); this.school = school; } // 实现抽象方法 sayHello @Override public void sayHello() { System.out.println("我是学生,我的名字是" + this.name + ",我今年" + this.age + "岁,我在" + this.school + "上学。"); } } // 定义 Teacher public class Teacher extends Person { private String subject; // 教授科目 // 构造方法 public Teacher(String name, int age, String subject) { super(name, age); this.subject = subject; } // 实现抽象方法 sayHello @Override public void sayHello() { System.out.println("我是老师,我的名字是" + this.name + ",我今年" + this.age + "岁,我教授的科目是" + this.subject + "。"); } } ``` 以上代码中,`Person` 是一个抽象,其中定义了两个属性 `name` 和 `age`,以及一个抽象方法 `sayHello`。`Student` 和 `Teacher` 都是 `Person` 的派生,它们分别添加了自己的属性 `school` 和 `subject`,并实现了 `Person` 中的抽象方法 `sayHello`。这样,我们就可以通过 `Student` 和 `Teacher` 来创建不同的对象,同时也可以调用 `Person` 中的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值