Закрытый член класса, доступный в методе main - PullRequest
1 голос
/ 18 января 2011

давайте предположим, что у нас есть следующий код:

 public class TestScope {
      private int a = 1;
         public static void main(String[] args) {
           TestScope ts = new TestScope();
           ts.a = 6;
           System.out.println(ts.a);
        }
    }

Почему в строке: ts.a = 6; я могу получить доступ к закрытой переменной a?Я думал, что частные члены не могут быть доступны снаружи.Я не недооцениваю этот пример.

Ответы [ 4 ]

6 голосов
/ 18 января 2011

Статические методы по-прежнему считаются частью класса, в котором они объявлены, и поэтому имеют доступ к закрытым методам / полям.

Если бы у вас был метод main (или любой другой статический метод или метод экземпляра) в другом классе, вы действительно не смогли бы получить доступ к.

5 голосов
/ 18 января 2011

Это потому, что a и main(String[]) являются частью определения класса TestScope

Приватный означает, что переменная или метод доступны только внутри определения класса .Тот факт, что a является переменной экземпляра, не означает, что к ней не может получить доступ статический открытый метод в том же классе.

Если public static void main(String[]) находится внутри другого класса, то он не будетвозможность доступа ts a, потому что a скрыт от других классов.

2 голосов
/ 18 января 2011

Статический метод считается «частью» класса, в котором он находится, и поэтому имеет частный доступ к его экземплярам.Этот же вопрос был решен здесь пару дней назад.

0 голосов
/ 18 января 2011

Ты не снаружи, ты в одном классе.

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