this: 对应的是当前类对象,可以调用当前类对象的属性以及方法。
super:对应的是父类对象,可以调用父类的属性与方法。
this.Object();表示调用当前方法。
Class.this表示当前对象自己。**
super.this指代父类对象。**
super()指代当前父类对象的构造方法,只能写在子类构造方法的第一行,且只能写一个构造方法
代码示例:
public class testThis {
int a=10;
public void b(){
this.a=20;
Object a=testThis.this;
System.out.println(a.toString());
}
}
输出结果为:com.openlab.wxl.testThis@949f69
注意:子类调用父类方法与属性时只能写在构造函数中。
public abstract class father {
int aa=0;
int bb=1;
public abstract void c();
public void aa(){
System.out.println("我是父类");
}
public testThis(){
int oo;
super.aa=oo; //使用super关键字调用父类属性
super.aa(); //使用super关键字调用父类方法
}
输出结果为:我是父类
public testThis(){
super();//调用父类无参构造函数
// super("我是父类的构造方法"); 两个super同时写的话会报错
super.aa=oo;//使用super关键字调用父类属性
super.aa();//使用super关键字调用父类普通方法
}
public father(){
System.out.println("我是父类的无参构造方法");
}
public void aa(){
System.out.println("我是父类");
}
输出结果为:我是父类的无参构造方法 (分别输出)
我是父类