Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

Разве внешний класс не имеет доступа к членам вложенного класса

#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, и всё прояснится

Комментариев нет:

Отправить комментарий