java的动态绑定机制:
对于一个已经被重写
的方法,调用方法会发生在运行时
而不是编译时解析
class A {
void show() {
System.out.println("我是 A ");
}
}
class B extends A {
@Override
void show() {
System.out.println("我是 B ");
}
}
class C extends B {
@Override
void show() {
System.out.println("我是 C ");
}
}
public class Main {
public static void main(String[] args) {
A[] arr = new A[3];
arr[0] = new A();
arr[1] = new B();
arr[2] = new C();
arr[0].show();
arr[1].show();
arr[2].show();
}
}
输出
我是 A
我是 B
我是 C
BC
继承了 A
并且重写了 show 方法。
在 arr 数组中,虽然数组类型为 A
,但是调用 show 方法时会自动动态调用原来创建类型的 show 方法,而不是 A 的 show 方法