java编译时多态和运行时多态_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

如果我们使用静态,私有,最终方法执行(实现)方法重写和方法重载,则这就是编译时(静态)多态性。

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

示例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

你可能感兴趣的:(java编译时多态和运行时多态)