编译时多态:主要是方法的重载,通过参数列表的不同来区分不同的方法。
运行时多态:也叫作动态绑定,一般是指在执行期间(非编译期间)判断引用对象的实际类型,根据实际类型判断并调用相应的属性和方法。主要用于继承父类和实现接口时,父类引用指向子类对象。
例如:
public class PolymorphismTest {
public static void main(String[] args) {
//运行时多态
SuperClass clazz = new SubClass();
clazz.method();
}
}
class SuperClass {
public SuperClass() {
System.out.println("父类的构造方法");
}
public void method() {
System.out.println("父类的method()");
}
}
class SubClass extends SuperClass {
public SubClass() {
System.out.println("子类的构造方法");
}
@Override
public void method() {
System.out.println("子类的method()");
}
}