#java
Помогите пожалуйста разобраться. Шилдт в своей книге пишет, что "... вложенный класс имеет доступ к членам своего внешнего класса. НО (Внимание!) внешний класс не имеет доступа к членам внутреннего класса". И тут вопрос,- что именно имелось ввиду? как не имеет доступа, когда в примере, приведенном ниже, метод внешнего класса получает доступ к члену своего внутреннего класса без проблем. class VneshnClass { void test (){ VnutrClass vnutObj = new VnutrClass (); vnutObj.vnutr_x++; // этим методом внешнего класса меняем значение // поля внутреннего класса vnutObj.displayVn(); } class VnutrClass { // внутренний класс int vnutr_x = 33; // вот наше поле внутреннего класса void displayVn(){ // метод вложенного класса System.out.println("vnutr_x = "+vnutr_x); } } } class MainClass { public static void main (String [] args){ VneshnClass obj = new VneshnClass(); obj.test(); } }
Ответы
Ответ 1
Шилдту следовало бы привести пример. Вот что имеется ввиду: class Outer { int outer_х = 100; class Inner { int inner_x = 200; void displayOuter () { System.out.println(outer_х); // вложенный класс имеет внешний. нормально } } void displayInner() { System.out.println(inner_х); // ошибка. внешний класс не имеет доступа к членам вложенного класса } } Доступ к членам вложенного класса возможен только через ссылку на экземпляр вложенного класса. Inner inner = new Inner(); println(inner.inner_x);Ответ 2
Всё правильно написано. Внешний класс не имеет доступа к членам вложенного класса. Попробуйте вызвать метод displayVn() или получить доступ к полю vnutr_x из obj, и всё прояснится
Комментариев нет:
Отправить комментарий