动态绑定:编译时检查语法,运行时判断改引用对象的实际类型,根据改实际类型调用相应的方法。
静态绑定:编译时编译器就会准确判断出调用那个方法,Java中只有final,static,private,构造方法是静态绑定。
相应的代码实例
public class Test2 {
public static void main(String[] args) {
Parent parent = new Child();
parent.staticMethod(); // 静态绑定,调用父类的静态方法 输出Parent's static method
parent.nonStaticMethod(); // 动态绑定,调用子类的非静态方法 输出Child's non-static method
}
}
class Parent {
public static void staticMethod() {
System.out.println("Parent's static method");
}
public void nonStaticMethod() {
System.out.println("Parent's non-static method");
}
}
class Child extends Parent {
public static void staticMethod() {
System.out.println("Child's static method");
}
public void nonStaticMethod() {
System.out.println("Child's non-static method");
}
}