this:表示当前运行类的实例对象
案例1:
public class Parent {
public void init() {
System.out.println("1 init parent");
this.demo();
}
public void demo() {
System.out.println("2 demo parent");
}
}
public class Son extends Parent {
public void init(){
super.init();
System.out.println("3 init son");
}
public void demo() {
System.out.println("4 demo Son");
}
public static void main(String[] args) {
//当前运行类 Son
Son son = new Son();
son.init(); //init(son)
}
}
运行结果:
要明确this的含义,this指的是当前运行类,当前运行的类是Son,所以在Parent的init( )方法里的this.demo( )实际是调用的Son里面的demo方法
案例2:
public class Son extends Parent {
public void init(){
super.init();
System.out.println("3 init son");
}
public void demo() {
System.out.println("4 demo Son");
}
public static void main(String[] args) {
//当前运行类 Son
Son son = new Son();
son.init(); //init(son)
}
}
public class Son extends Parent {
public String name="jack";
public void init(){
super.init();
System.out.println(this.name);
}
public static void main(String[] args) {
Son son = new Son();
son.init(); //init(son)
}
}
输出结果:
要明确字段是谁的就是谁的是不能被覆盖的