Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 引用与构造函数中的局部变量同名的实例变量?_Java_Oop_Syntax - Fatal编程技术网

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

Java 引用与构造函数中的局部变量同名的实例变量?,java,oop,syntax,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

这是一个理论性的示例,但是在声明了局部变量“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());
    }

}

代码中没有类变量

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

当然,类变量和实例变量不能同名


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

引用类变量。实例变量
a
和当前对象变量
this.a
是同一个变量。只有两个变量,
this.a
a
。您已经描述了如何引用这两个变量。但是当您声明一个局部变量“a”时,就不能再引用类变量“a”,只能引用实例变量(使用“this.a”)。对吗?不,不对。这根本没有道理。这里没有“class variable
a
”,除非您指的是“instance variable
a
”,这是相同的东西。