java基础—多态
多态指的是一个对象有多种形态,其中继承是多态的前提,所以说extends和implements是多态的前提
代码当中体现多态性,其实就是一句话:父类引用指向子类对象
格式:
1.父类名称 对象名 = new 子类名称();
2.接口名称 对象名 = new 接口实现类名称();
在多态的代码当中,成员方法的访问规则是
1.看new的是谁,就优先用谁,没有则向上找
2.编译看左边,运行看右边
对比一下
成员变量:编译看左边,运行还看左边
成员方法:编译看左边,运行看右边
什么是对象的向上转型
其实就是多态写法:父类名称 对象名 = new 子类名称();
含义: 右侧创建一个子类对象,把他当做父类看待使用。(向上转型一定是安全的,因为是从小范围转向了大范围,但是对象一旦转型为了父类,那么就无法调用子类原本的特有方法)
什么是对象的向下转型
其实就是一个还原的动作:子类名称 对象名 = (子类名称)父类对象;
含义: 将父类对象还原成为原来的子类对象。
注意事项
instanceof关键字进行类型判断
如何知道父类引用的对象,本来是什么子类
对象 instanceof 类名称:这将会得到一个boolean值,也就是判断前面的对象能不能当做后面实例的类型