#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, и всё прояснится
Комментариев нет:
Отправить комментарий