在Java语言中,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{
public static void main(String[] args){
Sub s = new Sub();
s.subf();
s.basef();
}
}
/*
程序运行结果为:
Sub:f()
Base:f()
*/
注意: 当子类构造函数需要显示调用父类构造函数时,super() 必须为构造函数中的第一条语句。