java提供了this关键字,this关键字表示该类的对象的默认引用。
this关键字最大的作用是,让类的一个方法,访问该类的另一个方法或者属性。
先看一个不好的例子:
public class Baby
{
public void wakeUp()
{
System.out.println("宝宝醒啦");
}
public void eat()
{
Baby baby = new Baby();
baby.wakeUp();
System.out.println("吃东西");
}
}
这样不符合逻辑。这就相当于本对象的eat方法,需要调用另一个对象的wakeUp方法。
我们看这个例子:
public class Baby
{
public void wakeUp()
{
System.out.println("宝宝醒啦");
}
public void eat()
{
this.wakeUp();
System.out.println("吃东西");
}
}
这样就符合逻辑了。自己的eat方法,还需要自己的一个wakeUp方法。
java允许同一个对象的方法直接调用该对象的属性或者方法,所以this可以省略。
public class Baby
{
public void wakeUp()
{
System.out.println("宝宝醒啦");
}
public void eat()
{
wakeUp();
System.out.println("吃东西");
}
}
而在静态方法中无法使用this,因为类可以直接调用该方法,所以this无法指向合适的对象。
public class Baby
{
public void wakeUp()
{
System.out.println("宝宝醒啦");
}
public static void eat()
{
// 报错
wakeUp();
System.out.println("吃东西");
}
}
我们再来看一个最常用的例子,就是在构造方法中使用this
public class Baby
{
private String name;
private int age;
public Baby(String name, int age)
{
super();
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}