多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要他们都是从同一个基类导出而来的,作用是消除类型之间的耦合关系。
下面看一段代码
class Animal3{
public void voice() {
System.out.println("一般动物叫声");
}
public void eat() {
System.out.println("eating...");
}
}
class Bird3 extends Animal3{
public void voice() {
System.out.println("zhazhazha");
}
public void run() {
System.out.println("flying");
}
}
public class Duotai {
public static void main(String[] args) {
Animal3 a = new Bird3(); //upcast(向上转型)
a.eat();
a.voice();
Bird3 a1 = (Bird3)a; //强制转型
a1.run();
}
}
我们可以看到,如果对象a想要调用Bird3类中的run()方法,我们必须将其强制转型成Bird3类的对象,而重写父类的方法仍可以直接调用。
多态必须要有继承。
父类引用构造子类对象