2020年4月11日01:28:41
面试面得有点睡不着,突然看到这个有点懵逼。
大家都知道 多态存在的三个必要条件有
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。 //就是我之前说的对象多态吧
多态是面向对象的一个重要特征,且我从网上知道的是
①多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
②实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
但是
重载(overload):是指允许存在多个同名方法,而这些方法的参数不同。重载的实现是:编译器根据方法不同的参数表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期就绑定了,即我们常说的静态多态(静态联编)也就是静态绑定或早绑定。
我感觉我还是赞成这一点的:
不要把函数重载理解为多态。因为多态是一种运行期的行为,不是编译期的行为
嗐,jvm书还没看完也许看完就懂了,明天还有面试,我纠结这个干嘛
参考博文:
https://blog.csdn.net/weigb/article/details/1864192
https://blog.csdn.net/a78270528/article/details/80018602?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1