java继承与多态(3)多态
概念: 一个对象有多重形态(父类,祖父类),这就是对象的多态性
代码中的多态性就是:父类引用指向子类
格式:父类名 对象名 = new 子类名称()
or 接口名 对象名 = new 实现类名()
(左父右子)
1 成员变量在多态中的特点
成员变量不能覆盖重写
编译和运行都看等号左边
2 多态中成员方法使用特点
编译看等号左边,运行看右边
3 使用多态的好处
new的子类对象变化时,调用的方法可以不必改变,因为调用的方法为父类抽象方法,然后在子类中具体实现
4 对象的向上转型
对象的向上转型就是多态写法父类名 对象名 = new 子类名()
含义:创建一个子类对象,把他当做父类使用
特点:
- 父类的方法是抽象的,调用这个抽象方法能具体实现不同子类的同种方法
- 向上转型一定是安全的,从小范围转向大范围类似于
double n = 100
int -->double这种自动类型转换
弊端: 父类不能调用子类的特有方法(父类没有的方法)
解决方法就是用向下转型还原
5 对象的向下转型
格式子类名称 对象名 = (子类名称) 原本父类对象
将父类对象还原成本来的子类对象
类似于强制类型转换
如果还原的不是本来的子类对象,就会出现java.lang.ClassCastException
类转换异常,但是编译不会报错
6 instanceof
判断父类的引用所指向的对象
格式:对象 instanceof 类型
得到boolean值结果
假如父亲朋友到家做客,朋友想认识下两个孩子,于是父亲叫来两个孩子做自我介绍
通过instanceof
判断传入的参数中,父类的引用所指向的对象是哪个,然后分别调用各自的方法