关键字this引用

关键字this引用


要点提示:关键字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(参数列表)调用参数多德构造方法。这样做通常可以简化代码,使类便于阅读和维护。

猜你喜欢

转载自blog.csdn.net/qq_40265501/article/details/80019620