多态
多态就是一种事物的多种状态
多态的前提:
1.类和类之间,必须要有关系(继承关系)
2.必须要有方法的重写(没有方法重写的多态没有意义)
3.(核心)父类的引用(指针)指向子类的对象(空间)
Animal animalCat = new Cat();
多态如何使用成员变量
多态的方式创建对象时,父类的引用只能访问子类空间中属于父类的那块空间。
访问成员变量时,在编译时要查看父类中是否有这个属性,没有就编译错误,运行时访问的是父类中的这个成员变量。
即当使用多态形式创建对象的时候,访问成员变量时编译和运行都是看父类中得属性。
多态如何调用成员方法
调用成员方法时,编译时需要看父类中是否有该方法,没有就报错,有就编译通过。运行时调用的是子类重写父类的方法。
即当使用多态形式创建对象的时候,调用成员方法时编译看父类,运行看子类。
多态的好处:
提高了代码的扩展性,后期出现的功能,可以被之前的程序所执行。
多态的弊端:
当使用多态的方式创建对象时,无法直接调用子类中特有的方法。
// 多态创建对象 // 提升了B的类型 // 提升了子类对象类型--向上转型 A a = new B(); // 如何调用子类的特有方法 // 向下转型 -- 强制类型转换 B b = (B)a;
多态调用子类的特有方法时,要注意:
必须要先有向上转型,才能进行向下转型。