这个问题是偶然间碰到的,通过代码来说名吧:
Test.java
class A {
public String name;
public String getName() {
System.out.println(this);
return this.name;
}
}
class B extends A {
public String name;
public B(String n) {
name = n;
}
}
public class Test {
public static void main(String[] args) {
System.out.println(new B("Jim").getName());
}
}
打印结果如下:
“this” 是B的一个对象,可是this.name却是A的。
关于继承,用下面这个图解释:
其实只有一个B对象,里面嵌了一个继承的A对象,当执行getName()时,实际上到了B中的A里面执行的当然得到的就是A的name了。
谢谢菲哥的解释。