java中多态性概念的混淆
我对java中的多态性概念有点困惑,因为不同的作者写的不同
案例-1
动态(运行时)多态性——使用实例方法的方法重载和方法重写就是动态多态性的例子
静态(编译时)多态性——使用静态方法的方法重载和方法重写;使用私有或final方法重写方法是静态多态性的示例
案例2
方法重载是编译时/静态多态性的一个例子
方法重写是运行时/动态多态性的一个示例
那么哪种情况是正确的??? java支持静态多态还是动态多态
你可以在下面搜索框中键入要查询的问题!
我对java中的多态性概念有点困惑,因为不同的作者写的不同
案例-1
动态(运行时)多态性——使用实例方法的方法重载和方法重写就是动态多态性的例子
静态(编译时)多态性——使用静态方法的方法重载和方法重写;使用私有或final方法重写方法是静态多态性的示例
案例2
方法重载是编译时/静态多态性的一个例子
方法重写是运行时/动态多态性的一个示例
那么哪种情况是正确的??? java支持静态多态还是动态多态
# 1 楼答案
编译时和运行时多态性与调用的解析时间直接相关
在编译时多态性中,调用在编译时解析。方法重载是编译时多态性的一个例子。重载是而不管它是在实例级还是在类级
例如:
接下来,运行时多态性:在这里,调用/方法签名在编译时被检查是否存在,但实际调用在运行时被解析。 例如:
O/p: 样品请注意,在重写过程中,方法签名是相同的
因此,底线是:第二种情况是正确的。Java同时支持静态和动态多态性
# 2 楼答案
案例2是正确的
方法重写-运行时多态性
方法重载-编译时多态性
# 3 楼答案
方法重载基本上是静态绑定,也可以说是早期绑定。因为编译器在编译时只能识别实际要调用的方法
方法重写是动态绑定或后期绑定,其中JVM仅在运行时标识方法调用(取决于指向哪个子类对象的基类引用)
您可以检查此方法是否存在方法重载:
您可以检查此方法是否覆盖了:
# 4 楼答案
重载是在编译时进行的。 重写是在运行时进行的。 因此,案例2是正确的