一、多态概述
要求:
1、有继承/实现关系;
2、有方法重写;
3、父类的引用指向子类的对象
例:
Animal a = new Cat();
二、多态成员变量、方法的访问特点
成员变量:
是否可以访问--看左边
具体执行的哪一类的变量--看左边
成员方法(重写的):
是否可以访问--看左边
具体执行的哪一类的方法--看右边
三、多态的弊端
使用父类作为参数声明,使用子类参与操作:具体如下
上图的方法可以用Animal的子类Cat Dog的对象来访问:
Cat c = new Cat;
useAnimal(c);//传的是Cat对象 就是Animal a = new Cat();
弊端:不能访问子类的方法
public void useAnimal(Animal a){
a.fish();//fish()是猫下的方法,不能访问!!XXX
}
四、多态中的转型
只能父类引用转子类
错误例:
public class Dog extends Animal{
}
public class Cat extends Animal{
}
Public class Test{
psvm{
Animal d = new Dog;
Cat c = (Cat)d;//xxxxxxxxx不能同辈转!!
将输出错误:ClassCastException
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。