Найти тему
DEBAGanov

Java 357. Абстрактные классы могут быть вложенными. Правда или ложь?

Да, абстрактные классы могут быть вложенными в другие классы. В Java мы можем определять классы внутри других классов, и такие классы называются вложенными классами или внутренними классами.

Абстрактный класс может быть объявлен как вложенный класс для того, чтобы ограничить его область видимости и скрыть его от других частей программы. Вложенные абстрактные классы могут иметь доступ к закрытым полям и методам внешнего класса, что делает их более гибкими в использовании.

Вот пример кода, показывающего, как абстрактный класс может быть вложенным в другой класс:

public class Outer {
private int x;

abstract class Inner {
public abstract void innerMethod();
}

public void outerMethod() {
Inner inner = new Inner() {
public void innerMethod() {
x = 10;
}
};
inner.innerMethod();
System.out.println("X is: " + x);
}
}

public class Main {
public static void main(String[] args) {
Outer outer = new Outer();
outer.outerMethod();
}
}

Здесь класс Inner объявлен как абстрактный, и он является вложенным классом в классе Outer. Класс Inner имеет абстрактный метод innerMethod(), который будет реализован в анонимном классе, создаваемом в методе outerMethod(). В этом же методе мы можем изменить значение поля x внешнего класса из анонимного класса, который реализует абстрактный метод innerMethod(). Таким образом, мы можем использовать вложенные абстрактные классы для более гибкого и удобного проектирования программного кода.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov