package com.design.fatory.chapter01;
public class Test {
public static void main(String[] args) {
A a = new B();
test(a);
}
public static void test(A a) {
System.out.println("test A");
a.whoAmI();
}
public static void test(B b) {
System.out.println("test B");
b.whoAmI();
}
}
class A {
public void whoAmI() {
System.out.println("I am A");
}
}
class B extends A {
public void whoAmI() {
System.out.println("I am B");
}
}
结果:
test A
I am B
分析:
1.第一步执行的方法来看肯定是要执行变量类型是A的方法,因为变量的类型就是A类型的,然后具体执行whoAmI方法的时候,肯定是执行子类自己的方法,不然继承和重写也就失去了意义了。