//父类
public class BaseClass {
private String a="1";
public BaseClass(String a){
System.out.println(this.a); //这两个this分别指向哪个对象
this.show();
}
public void show(){
System.out.println("1");
}
}
//子类
public class SubClass extends BaseClass {
public SubClass(String a) {
super(a);
}
public void show(){
System.out.println("2");
}
}
//测试
public class Test {
public static void main(String[] args) {
BaseClass b=new SubClass("a");
b.show();
}
}
问题:baseClass中的两个this分别指向哪个对象
this就是代表当前类本身,所以this.a就是String变量("1"),this.show()就是当前类的show方法。
具体跟super有什么异同,可以参考:http://blog.csdn.net/anmei2010/article/details/4093118
那两个this指向的是baseClass对象本身(this其实就是存放的对象本身的地址),super是父类的指针。
根据BaseClass b=new SubClass("a");两个this都是指向 new SubClass的内存地址空间
this永远是指向自己