Уроки Kotlin

#9 - Наследование классов и перечисление

#9 - Наследование классов и перечисление

Язык Kotlin обладает облегченным вариантом создания наследования для классов. В уроке вы научитесь реализовывать наследование, а также познакомитесь с перечислениями (enum).

Відеоурок

Telegram group

Підписуйтесь на нашу групу в Телеграмі 🇺🇦

Наследование является одним из ключевых понятий ООП. За счёт наследования можно создать один общий класс (класс родитель) и создать множество других классов (классы наследники), что будут наследовать все поля, методы и конструкторы из главного класса.


За чем использовать наследование?

Предположим что у нас есть один большой класс «Транспорт». В классе описываются базовые характеристики для всех транспортных средств:

  • поля: скорость, вес, запас хода и тому подобное;
  • методы: получение информации из полей, установка новых значений;
  • конструктор: пустой и по установке всех полей.


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


Мы явно понимаем, что у объекта машина и самолёт будут разные поля и характеристики. Как можно поступить:

  1. Можно создать два отдельных класса: «Car» и «Airplane». В каждом классе будут все методы, поля и конструкторы повторно переписанные из класса «Транспорт», а также будут новые методы, что важны только для конкретного класса;
  2. Можно создать два класса наследника: «Car» и «Airplane». Оба класса будут наследовать всё от класса «Транспорт» и при этом будут содержать свои дополнительные функции. Таким образом повторения кода не будет и код станет меньше и чище.


Создание классов наследников

Для создания класса наследника требуется создать класс и указать наследование от главного класса.


Пример класса наследника:

open class Transport {
	protected open var speed: Float = 0f
}

class Auto(var speed: Float, var model: String) : Transport() {
	init {
		println("Скорость: $speed, модель - $model")
	}
}

fun main(args: Array<String>) {
	val bmw = Auto(250.5f, "X3M")
	val mercedes = Auto(270f, "C63 AMG")
}

Как вы можете заметить, у нас есть одна общая переменная speed. Поскольку модификатор доступа у неё protected, то доступ к переменной мы имеем внутри класса Transport, а также внутри всех классов наследников.


Для создания наследования мы прописали ключевое слово : после имени класса и указали какой класс будет родительским.

Матеріали для курсу

Щоб завантажувати матеріали до відеокурсів, необхідно оформити підписку на сайт

Вихідний код

Весь код буде доступний після підписки на проект!

Завдання до уроку

Необхідно оформити передплату на проект, щоб отримати доступ до всіх домашніх завдань

Велике завдання за курсом

Вам необхідно оформити передплату на сайті, щоб мати доступ до всіх великих завдань. У завдання входить методика рішення, а також готовий проект з відповіддю до завдання.
PS: подібні завдання доступні при підписці від 1 місяця

Також варто подивитися

Kotlin Android Studio / Разработка Андроид программ
8 уроків
Коментарі
Додати коментар

Поки що коментарів немає