一、题目
- 按照要求完成以下操作。
- 创建Person,Teacher,Student类
其中,Person为父类,Teacher和Student都继承Person
Person中有属性:String name,int age(自己思考访问控制修饰符)
在Person中写出无参构造方法Person(),有参构造方法Person(String name,int age)
在Person中定义方法:showMessage(),用于展示人的信息,打印输出“展示某人的信息”
- 创建Person,Teacher,Student类
- 在Teacher类中定义私有的属性:工号teacherId
定义以下构造方法:
1.无参构造方法 Teacher()
2.有参构造方法Teacher(String name,int age,Int teacherId)
该构造方法中调用父类的2个参数的构造方法
在Teachar中重写方法showMessage():在方法体中输出“老师的信息是:姓名:xx,年龄:xx,工号:xx” - 在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(参数)的使用:调用父类的有参构造方法
//这句代码必须写在第一行