直接贴代码
class P {
public int a = 1;
public static int b = 1;
public P () {
System.out.println("P is created");
}
public void printf() {
System.out.println("parent");
}
}
class S extends P {
public int a = 2;
public static int b = 2;
public S () {
System.out.println("S is created");
}
public void printf() {
System.out.println("son");
}
}
class Test {
public static void main(String[] argvs) {
P obj = new S();
System.out.println(obj.a+" "+obj.b);
obj.printf();
}
}
结果是:
P is created
S is created
1 1
son
分析下调用过程:
首先是父类被构造,然后子类构造完毕。
然后多态中可以看到同名成员变量和静态变量调用的是父类的内容,但是同名成员函数调用的是子类的内容。
OVER。