Java提供了一个this关键字,this关键字总是指向调用该方法的对象。this作为对象的默认引用有两种情形。
>构造器中引用该构造器正在初始化的对象。
>在方法中引用调用该方法的对象。
public class Dog {
public void jump()
{
System.out.println("正在执行jump方法");
}
//定义一个run()方法,run()方法需要借助jump()方法
public void run()
{
this.jump();
System.out.println("正在执行jump方法");
}
}
大部分时候,一个方法访问该类中定义的其他方法、成员变量时加不加this前缀的效果是完全一样的。
对static修饰的方法而言,则可以使用类来直接调用该方法,若果在static修饰的方法中使用this关键字,则这个关键字就无法指向合适的对象。所以,static修饰的方法不用使用this引用。
Super
Super用于限定该对象调用父类继承得到的实例变量或方法。
//Bird.java
public class Bird {
public void fly()
{
System.out.println("我在天空飞");
}
}
//Ostrich.java
public class Ostrichextends Bird
{
//重写Bird类的fly()方法
public void fly()
{
System.out.println("我只能在地上奔跑");
}
public voidcallOverrideMethod()
{
//子类方法中通过super显式调用父类被覆盖的实例方法
super.fly();
}
}
正如this不能出现在static修饰的方法一样,super也不能出现在static修饰的方法中。Static修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象,因而super限定就失去了意义。