- 定义:同一个方法可以根据发送对象的不同而采用多种不同的行为方式,一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多
- 多态是方法的多态,属性没有多态
- 父类和子类要有联系,否则就会出现类型转换异常 -->ClassCastExpection
- 存在条件:①:继承关系②:方法需要重写③父类引用指向子类对象!
代码示例:
代码显示错误:因为 eat方法只存在与子类Student中,父类不能只能引用,只能通过强制类型转换才能引用。
而且,在代码中
子类重写了父类的run方法,所以,在Application执行的时候,都是执行子类的run方法。
对象能执行哪些方法,主要看对象左边的类型,和右边的关系不大
instanceof (类型转换) 引用类型,判断一个对象是什么类型 判断两个对象是否存在关系
如: x instanceof y :返回true就是存在关系,false就是没有关系。如果是同等级的,还会发生编译报错。
强制类型转化:
- 父类引用指向子类的对象
- 把子类转换为父类,向上转型:可能会丢失一些自己本来的方法
- 把父类转换为子类,向下转型:强制类型转换
- 方便方法的调用,减少重复的代码,更加简洁!