引用与构造函数中的局部变量同名的实例变量?

时间:2015-12-09 23:05:57

标签: java oop syntax

这是一个主要的理论示例,但是如果在声明了局部变量“a”之后,如何在构造函数中引用实例变量“a”,而不是当前对象变量“this.a”?

public class Foobar {
    public int a = 0;

    public Foobar(int a) {
        this.a = a;
    }

    public Foobar(int b, int c) {
        a = b * c;
        int a = c;    //after this point, is there any way of refer to the instance variable a but not a in the current object (i.e. this.a)?

    }

    public int getA() {
        return this.a;
    }

    public static void main(String[] args) {
        Foobar foo = new Foobar(3);
        Foobar bar = new Foobar(3, 1);

        System.out.println(foo.getA());

        System.out.println(bar.getA());
    }

}

1 个答案:

答案 0 :(得分:0)

您的代码中没有类变量。

如果您想要一个类变量,请使用static int a。当然,您无法使用this.a引用类变量:它只适用于实例变量。

当然,你不能拥有一个类变量和一个具有相同名称的实例变量。

如果用局部变量覆盖类变量,(不好主意 - 不要这样做 - 大多数IDE会警告你)然后可以用Foobar.a

引用类变量