Внутренний класс (Inner class)
class Example {
public class Inner {
//Внутренний класс
}
}
public class Program {
public static void main(String[] args)
{
Example.Inner inner = new Example().new Inner();
}
}
Сначала, Java создаёт объект класса Example, а после объект класса Inner?
_если да, то как можно обратиться к объекту Example?
_если нет, то что происходит при = new Example().?
Ответы (1 шт):
Автор решения: GreenBrown
→ Ссылка
Когда мы создаем объект «внутреннего» класса, в него незаметно передается ссылка на объект «внешнего» класса. Ведь наличие такого объекта — обязательное условие. Иначе мы не сможем создавать объекты внутреннего класса.
class Example {
public Example() {
System.out.println("Я класс Example");
}
public class Inner {
public Inner() {
System.out.println("Я класс Inner");
}
}
}
public class Program {
public static void main(String[] args)
{
Example.Inner inner = new Example().new Inner();
}
}
Вывод на консоль:
Я класс Example
Я класс Inner
Мы создали объект класса Example, но не записали адрес в ссылочную переменную.
class Example {
public String name = "Я класс Example";
public class Inner {
public String name = "Я класс Inner";
public Example getRefExample() {
return Example.this;
}
}
}
public class Program {
public static void main(String[] args)
{
Example.Inner inner = new Example().new Inner();
Example example = inner.getRefExample();
System.out.println(example.name);
}
}
Вывод на консоль:
Я класс Example
ссылка на статью