目录
一、向上转型
二、动态绑定
三、重写
四、向下转型
五、多态
一、向上转型
1.向上转型:实际就是创建一个子类对象,将其当成父类对象使用。
2.直接赋值
3.方法传参
4.方法返回
二、动态绑定
提问:为什么在Test类中,animal引用的eat()方法是子类的eat()方法,而不是父类的eat()方法?
答:我们观察代码发现:子类中的eat()方法和父类中的eat()方法构成了重写(①方法名相同②参数列表相同③返回值类型相同)。程序在编译的时候,确实调用的是父类的eat()方法,当代码运行的时候,通过父类的引用,调用了父类和子类重写的那个方法,结果实际调用了子类的eat()方法,此时我们把这个情况叫做动态绑定。
理论上来说确实应该调用的是父类的eat(),但是在运行的时候,把子类方法的地址赋值给了父类,所以通过父类地址一找,找到的就是子类的方法。
三、重写
1.什么是重写?(可以参考上图的重写形式)
(1).方法名相同。
(2).参数列表相同(个数、类型、顺序)。
(3).返回值类型相同。
2.重写的注意事项
(1).重写的方法不能是静态方法。
(2).被final、private修饰的方法不能被重写。
(3).如果子类要重写父类的方法,子类方法的修饰权限要大于父类。
(4).当想要构成重写的两个方法的返回值类型构成父子关系也是重写。
四、向下转型
向下转型需要强制类型转换,并且不是所有的向下转型都是可以成功的。
成功转型
失败转型
五、多态
在func方法,animal引用的eat()方法,我们发现不同的对象调用同一个方法表现出的结果不同,这种现象我们称为多态。
那么到现在为止,继承和多态的有关知识小编已经上传完了,有问题的宝子可以在下面留言,小编看到后一定会第一时间为你做出解答,大家也可以在评论区下面发表你的独特见解,我们一起探讨,希望这两篇关于继承和多态的博客能够对你Java的学习起到帮助,接下来小编也会继续上传Java学习方面的其他内容,期待得到大家的反馈♥♥♥