10. Резюме

Этот урок охватил много тем. Хотя многое из этого должно быть знакомо по другим объектно-ориентированным языкам программирования, Kotlin добавляет некоторые возможности для того, чтобы код оставался лаконичным и читаемым.

Классы и конструкторы

  • Определите класс в Kotlin, используя class`.`.
  • Kotlin автоматически создает сеттеры и геттеры для свойств.
  • Определите основной конструктор непосредственно в определении класса. Например:class Aquarium(var length: Int = 100, var width: Int = 20, var height: Int = 40)
  • Если для основного конструктора требуется дополнительный код, напишите его в одном или нескольких initблоках.
  • Класс может определить один или несколько вторичных конструкторов, используя ` constructor<constructor>`, но в стиле Kotlin вместо этого рекомендуется использовать фабричную функцию.

Модификаторы видимости и подклассы

  • Все классы и функции в Kotlin publicпо умолчанию являются , но вы можете использовать модификаторы для изменения видимости на internal, private, или protected.
  • Для создания подкласса родительский класс должен быть помечен как open.
  • Для переопределения методов и свойств в подклассе, эти методы и свойства должны быть помечены openв родительском классе.

Классы данных, синглтоны и перечисления

  • Создайте класс данных, добавив перед объявлением префикс ` data.`.
  • Деструктуризация — это сокращённый способ присвоения свойств объекта dataотдельным переменным.
  • Создайте класс-синглтон, используя objectвместо class.
  • Определите перечисление с помощью enum class.

Абстрактные классы, интерфейсы и делегирование

  • Абстрактные классы и интерфейсы — это два способа обеспечить совместное использование общего поведения между классами.
  • Абстрактный класс определяет свойства и поведение, но оставляет реализацию подклассам.
  • Интерфейс определяет поведение и может предоставлять реализации по умолчанию для некоторых или всех видов поведения .
  • При использовании интерфейсов для композиции класса его функциональность расширяется за счет экземпляров класса, которые он содержит.
  • Делегирование интерфейсов использует композицию, делегируя реализацию классам интерфейса.
  • Композиция — это мощный способ добавления функциональности классу с помощью делегирования интерфейсов. В целом, предпочтительнее использовать композицию, но наследование от абстрактного класса лучше подходит для решения некоторых задач.

Последнее изменение: Воскресенье, 5 апреля 2026, 14:12