今天看视频的时候碰到一个this的指向问题,现在就写篇博客记录一下吧,先看一下类的定义:
Father类:
public class Father {
String name = "Father";
public Father() {
System.out.println("this:" + this);
}
public String getName() {
return this.name;
}
}
Son类:
package test2;
public class Son extends Father{
String name = "Son";
public Son() {
}
}
现在来看看主函数:
Father f = new Son();
System.out.println(“f.name:” + f.name);
System.out.println(“f.getName():” + f.getName());
运行的结果:
this:test2.Son@15db9742
f.name:Father
f.getName():Father
第一行分析:
Father里面的this不是指向Father类,这个this就是当这个对象new出来的时候这个对象的引用,例如将子类的实例赋值给父类,那么父类里面使用this关键字时这个this指向的是子类的对象。
第二行、第三行分析:
既然前面说了this指向不是Father,那么this.name应该是Son,按我自己的理解,Son继承的Father类,那么Father中的name属性也继承,所以this.name还是可以访问到Father的name属性的。