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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP