链接:
https://www.nowcoder.com/test/question/done?tid=6726315&qid=14992#summary
来源:牛客网
来源:牛客网
java多态有两种情况:重载和覆写
在覆写中,运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法;
在重载中,运用的是静态多分派,即根据静态类型确定对象,因此不是根据new的类型确定调用的方法
今天的java是一门静态多份派、动态单份派的语言。
其中静态多分派是根据在编译阶段javac编译器会根据参数的静态类型来决定使用哪个重载版本,与重载有关。
动态多份派是在程序运行期间在类的方法元数据中搜索合适的目标方法的选择过程,与覆盖有关。
具体可以参考 深入理解java虚拟机P246~P260
通俗的理解方式有:
当子类覆盖了父类的方法,但是创建对象时使用多态将对象向上转型,则会限制子类方法的调用,该对象的引用调用的是父类的方法而非子类的方法。
动态多份派是在程序运行期间在类的方法元数据中搜索合适的目标方法的选择过程,与覆盖有关。
具体可以参考 深入理解java虚拟机P246~P260
通俗的理解方式有:
当子类覆盖了父类的方法,但是创建对象时使用多态将对象向上转型,则会限制子类方法的调用,该对象的引用调用的是父类的方法而非子类的方法。