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

更新于: 30-7-2019

993 次观看

事业起航

完成课程即可获得认证

开始
广告
© . All rights reserved.