定义一个person类有方法talk 他有两个子类student和teacher请编写java程序体现java的面向对象的多态特征
时间: 2024-09-21 18:03:50 浏览: 57
在Java中,我们可以使用继承和方法重写来展示面向对象的多态特性。首先,我们定义一个`Person`类作为父类,然后创建两个子类`Student`和`Teacher`,这两个子类都覆盖父类的`talk`方法。以下是相关的Java代码:
```java
// Person类,包含基本的行为
class Person {
public void talk() {
System.out.println("This is a person talking.");
}
}
// Student子类,重写talk方法
class Student extends Person {
@Override
public void talk() {
System.out.println("A student says something educational.");
}
}
// Teacher子类,也重写talk方法
class Teacher extends Person {
@Override
public void talk() {
System.out.println("A teacher shares knowledge.");
}
}
public class Main {
public static void main(String[] args) {
// 创建Person类型的引用,并存储不同类型的具体对象
Person studentObj = new Student();
Person teacherObj = new Teacher();
// 使用父类引用调用各自子类的方法,体现多态
studentObj.talk(); // 输出: A student says something educational.
teacherObj.talk(); // 输出: A teacher shares knowledge.
// 通过类型转换进一步展示多态
((Student) teacherObj).talk(); // 输出: A student says something educational. (因为teacherObj实际上是Student类型)
}
}
```
在这个例子中,`main`方法中,尽管引用变量`studentObj`和`teacherObj`都是`Person`类型的,但我们分别实例化了`Student`和`Teacher`。当我们通过这些引用调用`talk`方法时,实际运行的是子类中各自的实现,这就是多态的体现。
阅读全文