Уроки Kotlin

#8 - Абстрактные классы и интерфейсы

#8 - Абстрактные классы и интерфейсы

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

Видеоурок

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


Что такое интерфейс?

Интерфейсы очень схожи с абстрактными классами и предоставляют лишь методы без реализации. 


В интерфейсах можно записать методы, что должны реализовываться во всех классах, использующих интерфейс. Это удобно, ведь за счёт такого функционала мы можем быть уверены в классах и будем знать что они реализовывают все те функции, что мы предусмотрели заранее.


Как создать интерфейс?

Для создания интерфейса используется ключевое слово Interface:

interface SomeOne {
	fun change (value: String)
}

В интерфейсе можно не прописывать модификаторы доступа и по-умолчанию будет проставлен модификатор public


Для реализации функционала в интерфейсе необходимо создать класс и указать что он является классом, реализующим определенный интерфейс. Для этого после названия класса пропишите слово ::

class Person(var name: String, var happiness: Float, var age: Int) : SomeOne {

	override fun change (value: String) {
		name = value
		print("Теперь человека зовут - $value")
	}
}

Для реализации нескольких интерфейсов их можно прописать через запятую в классе после слова :.


Абстрактный класс

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


Для создания абстрактного классов используется ключевое слово abstract:

abstract class Person(var height: Float, var words: String) {
	fun getHeightMultiply() = height * 2
	abstract fun getName(): String
}

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


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


Подобные классы полезны, ведь можно указать лишь общий функционал, что должен присутствовать во всех классах наследниках, но при этом какая именно будет реализация нам не известно.

Исходный код

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

Онлайн редактор кода

Загрузка...

Задание к уроку

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

Большое задание по курсу

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

Также стоит посмотреть

Дополненная реальность / Создание Unity AR приложений
Создание игры Unity 5 | Начало
9 уроков
Изучение стека MEAN: MongoDB, Express, Angular и Node JS
10 уроков
Создание игры под платформу iOS на Unity
Комментарии для сайта Cackle