【问题标题】:Can anyone describe what is the correct method of dynamic method dispatch of following 2 programmes [duplicate]谁能描述以下2个程序的动态方法调度的正确方法是什么[重复]
【发布时间】:2018-02-04 17:43:56
【问题描述】:
class B{
    public void p(double i){
        System.out.println("B");
    }
}
class A extends B{
    public void p(double i){
        System.out.println("A");
    }
}


class Demo{
    public static void main(String args[]){
      //way of using polymorphic 1
        A a=new A();
        a.p(10.0);

      //way of using polymorphic 2
        A a=new B();
        a.p(10.0)
    }
 }

这两种方式都提供了相同的答案。但我想知道这两种使用动态多态的方式有什么区别。在程序中使用的最佳方式是什么?

【问题讨论】:

  • 第一个例子根本没有使用多态性,所以这似乎是一个“我应该使用多态性/为什么使用多态性/多态性有什么好处”的问题(忽略编译器错误暂时)。

标签: java oop


【解决方案1】:

从多态的上下文和意图你的第二种方式更有意义。

【讨论】:

    【解决方案2】:

    如果一个方法被覆盖,那么在运行时对象类型的方法将被执行。不是引用类型。

    【讨论】:

      猜你喜欢
      • 2019-01-13
      • 2017-04-17
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 2021-10-22
      相关资源
      最近更新 更多