Какие внутренние классы автоматически объявляются внутри другого класса, если явно не определено их создание?

В Java и Kotlin внутри класса автоматически не объявляются никакие внутренние классы, если они явно не определены разработчиком.

Короткий ответ

Что ответить на собеседовании

В Java и Kotlin внутри класса автоматически не объявляются никакие внутренние классы, если они явно не определены разработчиком. Однако в Kotlin есть особенность: если внутри класса объявлен объект с ключевым словом companion object, то он автоматически становится синглтоном, связанным с этим классом, и доступен без создания экземпляра класса.

Подробный разбор

Ответ с пояснениями

В Java и Kotlin внутри класса автоматически не объявляются никакие внутренние классы, если они явно не определены разработчиком. Однако в Kotlin есть особенность: если внутри класса объявлен объект с ключевым словом companion object, то он автоматически становится синглтоном, связанным с этим классом, и доступен без создания экземпляра класса.

То есть, если не создавать внутренние классы явно, то никаких внутренних классов не будет. В Kotlin companion object — это единственный автоматически создаваемый объект внутри класса, если он объявлен.

Пример Kotlin:

class MyClass {
    companion object {
        val CONSTANT = 42
        fun create() = MyClass()
    }
}

// Использование:
val instance = MyClass.create()
val value = MyClass.CONSTANT

В Java подобных автоматически создаваемых внутренних классов нет.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку