要点提示: 关键字this引用独享自身。他也可以在构造方法内部调用另一个类的其他构造方法。
关键字this是指向调用对象本身的引用名。可以用this关键字引用对象的实例成员。
复制代码
例如:下面a的代码使用this来显示地引用独享的radius以及调用他的getArea()方法。this引用通常可以省略掉的,如b所示。然而,在引用隐藏数据域的以及调用一个重载的构造方法的时候,this引用是必须的。
//a:
public class Circle{
private double radius;
.....
public double getArea() {
return this.radius*this.radius*Math.PI;
}
public String toString() {
return "radius"+this.radius+"area"+this.getArea();
}
}
//b:
public class Circle{
private double radius;
.....
public double getArea() {
return radius*radius*Math.PI;
}
public String toString() {
return "radius"+radius+"area"+getArea();
}
}
复制代码
使用this引用隐藏数据域
this关键字可以用于引用类的隐藏数据域。例如在数据域set方法中,经常将数据域名用作参数名。在这种情况下,这个数据域在set方法中被隐藏。为了给他设置新值,需要在方法中引用隐藏的数据域名。隐藏的静态变量可以简单的通过“类名.静态变量”的方式引用。隐藏的实例变量就需要使用关键字this来引用了。
public class F {
private int i = 5;
private static double k = 0;
public void setI(int i){
this.i = i;
}
public static void setK(double k) {
F.k = k;
}
//other menthods omitted
}
复制代码
使用this调用构造方法
关键字this可以用于调用同一个类的另一个构造方法。例如,可以如下改写Circle类:
public class Circle {
private double radius;
public Circle(double radius) {
tihs.radius = radius; //this关键字用于引用所构建的对象的隐藏数据radius
}
public Circle() {
tihs(1.0); //this关键字用来调用另一个构造方法
}
}
在第二个构造方法中,this(1.0)这一行调用带double值参数的第一个构造方法。
复制代码
注意: Java要求在构造方法中,语句this(参数列表)应在任何其他可执行语句之前出现。
提示: 如果一个类有多个构造方法,最好尽可能的使this(参数列表)实现它们。通常,无参数或参数少的构造方法可以用this(参数列表)调用参数多德构造方法。这样做通常可以简