Как провести различие между закрытой переменной экземпляра и параметром, имеющим такое же имя в Java - PullRequest
0 голосов
/ 30 августа 2018

В java есть ключевое слово this для доступа к открытым переменным. Но есть ли такой способ доступа к приватным

class Foo {

    private int a = 2;
    public int b = 3;

    public void test(int a, int b) {
        this.b = b;
        //but how to access a;
    }

    public static void main(String args[]) {
        Foo x = new Foo();
        x.test(1, 2);
    }
}

Выше приведен пример кода ....

Ответы [ 5 ]

0 голосов
/ 30 августа 2018

Следуйте инструкциям по Java на этом keword он может получить доступ к закрытым членам:

private int x, y;
public Rectangle(int x, int y, int width, int height) {
   this.x = x;
0 голосов
/ 30 августа 2018

Внутри одного и того же класса и частные, и публичные переменные могут быть доступны одинаково:

class Foo {

    private int a = 2;
    public int b = 3;

    public void test(int a,int b){
        this.b = b;
        this.a = a; // accessing private field a
    }

    public static void main(String args[]){
        Foo x = new Foo();
        x.test(1,2);
    }
}
0 голосов
/ 30 августа 2018

Объект класса может получить доступ к своим закрытым членам, иначе ничто не сможет получить к ним доступ, и они будут совершенно бессмысленными. Так что this с приватными членами работает абсолютно нормально.

0 голосов
/ 30 августа 2018

Class method имеют доступ к private data member, поэтому вы можете использовать

this.a=a
0 голосов
/ 30 августа 2018

Все методы класса имеют доступ к своим собственным закрытым членам. Следовательно, this.a = a будет работать.

...