Java中早期绑定和后期绑定的区别

早期绑定: 编译器可以在编译时解析的绑定称为静态或早期绑定。所有静态、私有和最终方法的绑定都是在编译时完成的。

例子:

public class NewClass {     public static class superclass {         static void print()         {             System.out.println("print in superclass.");         }     }     public static class subclass extends superclass {         static void print()         {             System.out.println("print in subclass.");         }     }      public static void main(String[] args)     {         superclass A = new superclass();         superclass B = new subclass();         A.print();         B.print();     } } 

运行结果:

print in superclass. print in superclass. 

后期绑定: 在后期绑定或动态绑定中,编译器不决定要调用的方法。覆盖是动态绑定的完美示例。在覆盖父类和子类时具有相同的方法。

例子:

public class NewClass {     public static class superclass {         void print()         {             System.out.println("print in superclass.");         }     }      public static class subclass extends superclass {         @Override         void print()         {             System.out.println("print in subclass.");         }     }      public static void main(String[] args)     {         superclass A = new superclass();         superclass B = new subclass();         A.print();         B.print();     } } 

运行结果:

print in superclass. print in subclass. 

Java中早期绑定和后期绑定的区别

早期绑定 后期绑定
早期绑定是一个编译时进程 后期绑定是一个运行时进程
方法定义和方法调用在编译时链接。 方法定义和方法调用在运行时链接。
实际对象不用于绑定。 实际对象用于绑定。
例如:方法重载 例如:方法覆盖
程序执行速度较快 程序执行速度较慢

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264428.html

(0)
上一篇 2022年6月7日
下一篇 2022年6月7日

相关推荐

发表回复

登录后才能评论