abstract class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public abstract void say(); } class Student extends Person{ public Student(String name, int age) { super(name, age); } public void say() { System.out.println("学生姓名:"+this.getName()+",年龄: "+this.getAge()+",负责回答问题。"); } } class Teacher extends Person{ public Teacher(String name, int age) { super(name, age); } public void say() { System.out.println("老师姓名:"+this.getName()+",年龄: "+this.getAge()+",负责提出问题。"); } } public class al4_4 { public static void main(String[] args) { Person per1 = new Student("张三", 18); Person per2 = new Teacher("李四", 30); per1.say(); per2.say(); } }
时间: 2023-06-24 17:05:10 浏览: 91
abstract class
这是一个简单的面向对象程序,其中定义了一个抽象类 Person,它有两个属性 name 和 age,以及一个抽象方法 say()。而子类 Student 和 Teacher 继承了 Person 类,并实现了 say() 方法。
在 main() 方法中,我们创建了一个 Student 对象和一个 Teacher 对象,并将它们赋值给 Person 类型的变量 per1 和 per2。当我们调用 per1.say() 和 per2.say() 时,实际上会根据对象的实际类型来确定调用哪个类的 say() 方法,从而输出不同的语句。
具体来说,per1.say() 会调用 Student 类的 say() 方法,输出 "学生姓名:张三,年龄: 18,负责回答问题。";而 per2.say() 会调用 Teacher 类的 say() 方法,输出 "老师姓名:李四,年龄: 30,负责提出问题。"。
这种多态性是面向对象编程的一个重要特征,它允许我们使用基类类型的变量来引用子类对象,并在运行时根据实际类型来动态调用方法。
阅读全文