Повторное объявление переменных с модификаторами доступа в Java - PullRequest
4 голосов
/ 09 января 2012

Если я объявляю переменную закрытой, могу ли я повторно объявить ее другим способом?

Это ключ, потому что я использовал Netbeans для генерации своего кода GUI, и он каждый раз использует одни и те же имена для переменных.Есть ли способ избежать изменения каждой переменной?

ДОБАВЛЕНИЕ / РЕДАКТИРОВАТЬ: Это относится и к самим методам?Как насчет объектов?

Ответы [ 4 ]

3 голосов
/ 09 января 2012

Локальная переменная и частная переменная экземпляра, даже с одним и тем же именем, являются двумя разными переменными. Это разрешено Локальная переменная скрывает переменную экземпляра. Единственный способ получить доступ к скрытой переменной экземпляра - это поставить перед ней префикс this.

2 голосов
/ 09 января 2012

Это действительно, если вы имеете в виду:

public class Experiment {

    private int test;

      public void again()
        {
            int test ;   //the local variable hides the previous one
        }

}
2 голосов
/ 09 января 2012

Локальные переменные внутри метода не могут быть объявлены с модификаторами видимости (public, private, protected или по умолчанию), только атрибуты класса могут использовать эти модификаторы.

Вы можете использовать одни и те же имена переменных в разных методах, это не вызовет конфликтов. Рекомендуется называть локальные переменные в методе именами, отличными от имен атрибутов класса. Чтобы я понял:

public class Test {

    private String attribute1; // these are the attributes
    private String attribute2;

    public void method1() {
        String localVariable1; // variables local to method1
        String localVariable2;
    }

    public void method2() {
        String localVariable1; // it's ok to reuse local variable names
        String localVariable2; // but you shouldn't name them attribute1
                               // or attribute2, like the attributes
    }

}
1 голос
/ 09 января 2012

Рассмотрим следующее

public class Example {

  private String outerString = "outer";

  public void exampleMethod(){
    String outerString = "inner";
    System.out.println(outerString);      // prints "inner"
    System.out.println(this.outerString); // prints "outer"
  }
}

Переменная вне метода затеняется переменной с тем же именем в методе. Такие вещи не приветствуются, потому что их легко запутать. Вы можете прочитать больше здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...