Inner Class
https://kotlinlang.org/docs/nested-classes.html |
inner
Используется для обозначения вложенного класса, который имеет доступ к полям и методам внешнего класса. Без inner
вложенные классы в Kotlin являются статическими.
class Outer {
private val name = "Outer"
inner class Inner {
fun printName() {
println("Accessing: $name")
}
}
}
fun main() {
val outer = Outer()
val inner = outer.Inner()
inner.printName() // Accessing: Outer
}
Вопросы на собесе (5)
- Для чего используется inner class?
Позволяет классу получить доступ к свойствам и методам внешнего класса, что удобно для работы с связанными данными и логикой.
- Разница между inner class и обычным nested классом?
inner class
имеет доступ к полям и методам внешнего класса, обычный класс этого не может. Кроме того,inner class
создается внутри внешнего класса и связан с его экземпляром, а обычный класс может существовать независимо.
- Почему inner-class имеет доступ к полям родительского класса?
Потому что он неявно содержит ссылку на его экземпляр. Это позволяет внутреннему классу обращаться к переменным и методам внешнего класса, как если бы они были его собственными.
- Имеет ли inner-class доступ к приватным полям родительского класса?
Да, через неявную ссылку на его экземпляр.
- Имеет ли родительский класс доступ к приватным полям inner-класса?
Нет.