Java 中编译时多态性和运行时多态性的区别是什么?


如果我们使用实例方法执行(实现)方法覆盖和方法重载,则为运行时(动态)多态性。

在动态多态性中,方法调用和方法体之间的绑定发生在执行时,这种绑定称为动态绑定或延迟绑定。

示例

实时演示

class SuperClass{
   public static void sample(){
      System.out.println("Method of the super class");
   }
}
public class RuntimePolymorphism extends SuperClass {
   public static void sample(){
      System.out.println("Method of the sub class");
   }
   public static void main(String args[]){
      SuperClass obj1 = new RuntimePolymorphism();
      RuntimePolymorphism obj2 = new RuntimePolymorphism();
      obj1.sample();
      obj2.sample();
   }
}

输出

Method of the super class
Method of the sub class

如果我们使用静态、私有、final 方法执行(实现)方法覆盖和方法重载,则为编译时(静态)多态性。

在静态多态性中,方法调用和方法体之间的绑定发生在编译时,这种绑定称为静态绑定或早期绑定。

示例

class SuperClass{
   public static void sample(){
      System.out.println("Method of the super class");
   }
}
public class SubClass extends SuperClas {
   public static void sample(){
      System.out.println("Method of the sub class");
   }
   public static void main(String args[]){
      SuperClass.sample();
      SubClass.sample();
   }
}

输出

Method of the super class
Method of the sub class

更新日期:2019-07-30

997 次浏览

开启你的职业生涯

通过完成课程来获得认证

开始
广告