定义一个人类Person,它有两个子类Student和Teacher,请编写程序体现Java面向对象的多态特征。
时间: 2024-09-13 13:15:09 浏览: 57
在Java中,面向对象编程的一个重要特征就是多态。多态允许我们使用一个共同的接口来引用不同类型的对象,并且在运行时根据对象的实际类型来决定调用哪个方法。下面是一个简单的例子来说明如何通过定义一个基类Person和它的两个子类Student和Teacher来体现多态。
首先,定义基类Person:
```java
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public void introduce() {
System.out.println("这是一个名为" + name + "的人。");
}
public String getName() {
return name;
}
}
```
然后,定义子类Student:
```java
public class Student extends Person {
public Student(String name) {
super(name);
}
@Override
public void introduce() {
System.out.println("这是一个名为" + getName() + "的学生。");
}
}
```
接着,定义子类Teacher:
```java
public class Teacher extends Person {
public Teacher(String name) {
super(name);
}
@Override
public void introduce() {
System.out.println("这是一个名为" + getName() + "的老师。");
}
}
```
最后,创建一个测试类来体现多态:
```java
public class Test {
public static void main(String[] args) {
Person person = new Person("某人");
Student student = new Student("小明");
Teacher teacher = new Teacher("老王");
Person[] people = new Person[]{person, student, teacher};
for (Person p : people) {
p.introduce(); // 这里体现了多态,根据对象的实际类型调用相应的方法。
}
}
}
```
在上面的例子中,尽管Person、Student和Teacher是不同的类,但是它们都遵循了共同的接口(都有introduce方法)。在Test类中,我们可以使用Person类型的数组来存储Person、Student和Teacher的实例,并且可以对它们调用introduce方法。这就是多态的体现。
阅读全文