多态
面向对象三大特性之一
可以实现动态编译:程序类型的最终状态只有在执行的时候才可以确定(可扩展性)
没有static,调用Student()对象的方法,Student继承Person,可以调用Person的方法
在子类里面重写父类的方法
在子类写eat方法
所以
-
父类有,子类有(子类重写了父类的方法)—— 调用子类的方法
-
父类有,子类没有——调用父类的方法
-
没有static,调用的是Student对象的方法,Student继承Person,可以调用Person类的方法
-
对象能执行哪些方法,主要看左边,左边有就执行左边
-
-
父类没有,子类有——执行不了
主要看左边,左边没有就执行不了,因为s2是左边Person类的
多态总结
同样是run,s1跟s2可能调用出不一样的结果
让程序变得更灵活
instanceof
可以判断两个类之间是否存在父子关系
这个object的数据类型是Object,但这个object属于Student类
可以先用instanceof判断是否相似,然后进行强制转换
现在写一个Person类型的
写个Student类型的
类型转换
父类无法调用子类独有的方法(回看前面)
高转低
低转高
总结
来源:b站狂神