public class TestQuestion1 {
public static void main(String[] args) {
new c().visit();
}
}
class b{
int a = 4;
public void v() {
System.out.println(this.a);
System.out.println(this.getClass());
}
}
class c extends b {
int a = 6;
public void visit() {
super.v();
}
}为什么输出会是a 和class c呢?
public static void main(String[] args) {
new c().visit();
}
}
class b{
int a = 4;
public void v() {
System.out.println(this.a);
System.out.println(this.getClass());
}
}
class c extends b {
int a = 6;
public void visit() {
super.v();
}
}为什么输出会是a 和class c呢?
和楼主的问题类似。
getClass返回的是此 Object 的运行时类。所以返回的是运行的对象c的类。
嗯 主要是对getClass没了解 现在能想通了!
C c = new C();
c.init();
super调用父类b,b方法输出初始化好的a的值,定义c的对象类是C,所以输出C