this:用来指向当前实例对象,它的一个非常重要的作用就是用来区分对象的成员变量与方法的形参(当一个方法的形参与成员变量的名字相同时,就会覆盖成员变量),例如:
class People{
String name;
//正确的写法
public People(String name){
this.name = name;
}
//错误的写法
public People(String name){
name = name;
}
}
super:可以用来访问父类的方法或成员变量。当子类的成员变量或者方法与父类有相同时会覆盖父类的成员变量或方法,就要通过super关键字来访问。
class Base{
public void f(){
System.out.println("Base:f()");
}
}
class Sub extends Base{
public void f(){
System.out.println("Sub:f()");
}
public void subf(){
f();
}
public void basef(){
super.f();
}
}
public class Test{
Sub s = new Sub();
s.subf();
s.basef();
}
输出结果为:
Sub:f()
Base:f()
注意:当子类构造函数要显示调用父类的构造函数时,super()必须为构造函数中的第一条语句