思路:
/* 老师和学生 上课时,老师在讲台上讲课,偶有提问,点名学生回答问题 虽然老师和学生都在讲话,但讲话的内容不同 使用抽象类的知识编写一个程序实现老师上课的情景 1.定义一个抽象类Person,在Person类中声明属性name和age,并设置其对应的getter方法,用于获取姓名和年龄; 在Person类中声明一个有参构造方法,用于对Person类中的属性进行初始化; 在Person类中声明一个say()方法; 2.定义类Student,继承Person类,声明Student的构造方法并重写Person类的say()方法; 3.定义类Teacher,继承Person类,声明Teacher的构造方法并重写Person类的say()方法; 4.定义测试类,在测试类中分别使用向上转型的方式实例化两个Person对象per1和per2,分别调用say()方法。 */
代码:
代码结构:
测试类:
package base.base010;
/*
老师和学生
上课时,老师在讲台上讲课,偶有提问,点名学生回答问题
虽然老师和学生都在讲话,但讲话的内容不同
使用抽象类的知识编写一个程序实现老师上课的情景
1.定义一个抽象类Person,在Person类中声明属性name和age,并设置其对应的getter方法,用于获取姓名和年龄;
在Person类中声明一个有参构造方法,用于对Person类中的属性进行初始化;
在Person类中声明一个say()方法;
2.定义类Student,继承Person类,声明Student的构造方法并重写Person类的say()方法;
3.定义类Teacher,继承Person类,声明Teacher的构造方法并重写Person类的say()方法;
4.定义测试类,在测试类中分别使用向上转型的方式实例化两个Person对象per1和per2,分别调用say()方法。
*/
public class Test10 {
public static void main(String[] args) {
Student stu = new Student("shoogy",19);
stu.say();
Teacher t = new Teacher("sinole",21);
t.say();
}
}
person抽象类:
package base.base010;
/*
1.定义一个抽象类Person,在Person类中声明属性name和age,并设置其对应的getter方法,用于获取姓名和年龄;
在Person类中声明一个有参构造方法,用于对Person类中的属性进行初始化;
在Person类中声明一个say()方法;
*/
public abstract class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void say();
}
Student类:
package base.base010;
/*
2.定义类Student,继承Person类,
声明Student的构造方法并重写Person类的say()方法;
*/
public class Student extends Person {
public Student() {
}
public Student(String name, int age) {
super(name, age);
}
@Override
public void say() {
System.out.println("学生姓名:"+getName());
System.out.println("学生年龄:"+getAge());
System.out.println("学生负责回答问题");
}
}
teacher类:
package base.base010;
/*
3.定义类Teacher,继承Person类,
声明Teacher的构造方法并重写Person类的say()方法;
*/
public class Teacher extends Person {
public Teacher() {
}
public Teacher(String name, int age) {
super(name, age);
}
@Override
public void say() {
System.out.println("老师姓名:"+getName());
System.out.println("老师年龄:"+getAge());
System.out.println("老师负责提出问题");
}
}