面向对象特征之三:多态性
理解多态性:
1、可以理解为一个事物的多种形态
2、何为多态性
对象的多态性,父类的引用指向子类的对象(或者子类的对象赋给父类引用)
3、多态的使用,虚拟方法调用
有了对象的多态性以后,我们在编译器只能调用父类中声明的方法,但是在运行期,我们实际执行的是子类重写父类的方法。
总结:编译看左边,执行看右边
4、多态性的使用前提:① 类的继承关系 ② 方法的重写
5、对象的多态性只适用于方法不适用于属性(编译和运行都看左边)
//示例
public class AnimalTest {
public static void main(String[] args) {
AnimalTest test = new AnimalTest();
test.func(new Dog());
}
public void func(Animal animal) {//Animal animal = new Dog();
animal.shout();
}
}
class Animal{
public void eat() {
System.out.println("动物,吃东西");
}
public void shout() {
System.out.println("动物,叫");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("狗,吃骨头");
}
public void shout() {
System.out.println("汪汪汪!");
}
}
class Cat extends Animal {
public void eat() {
System.out.println("猫,吃鱼");
}
public void shout() {
System.out.println("喵喵喵!");
}
}