要点提示: 关键字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(参数列表)调用参数多德构造方法。这样做通常可以简