У цій статті ви ознайомитесь з об’єктно-орієнтованим програмуванням у Kotlin. Ви дізнаєтесь, що таке клас, як створювати об’єкти та використовувати його у своїй програмі.
Kotlin підтримує як функціональне, так і об'єктно-орієнтоване програмування.
Kotlin підтримує такі функції, як функції вищого порядку, типи функцій та лямбда, що робить його чудовим вибором для роботи у стилі функціонального програмування. Ви дізнаєтесь про ці поняття у наступних розділах. Ця стаття буде зосереджена на об’єктно-орієнтованому стилі програмування в Котліні.
Об'єктно-орієнтоване програмування (ООП)
В об’єктно-орієнтованому стилі програмування ви можете розділити складну задачу на менші набори, створюючи об’єкти.
Ці об'єкти мають дві характеристики:
- держава
- поведінки
Візьмемо кілька прикладів:
- Лампа - це предмет
- Це може бути як увімкнений, так і вимкнений стан.
- Можна
turn on
іturn off
лампа (поведінка).
- Велосипед - це предмет
- Він має поточну передачу, два колеса, кількість передач тощо.
- Він має гальмування, прискорення, перемикання передач тощо.
Ви дізнаєтесь про детальні особливості об’єктно-орієнтованого програмування, такі як: інкапсуляція даних, успадкування та поліморфізм, як ми продовжуємо. Ця стаття буде зосереджена на основних елементах, щоб зробити речі простими.
Рекомендована література: Що таке предмет?
Клас Котліна
Перш ніж створювати об'єкти в Kotlin, вам потрібно визначити клас.
Клас - це проект об'єкта.
Ми можемо сприймати клас як ескіз (прототип) будинку. Він містить усі подробиці про підлоги, двері, вікна тощо. На основі цих описів ми будуємо будинок. Будинок - це об’єкт.
Оскільки багато будинків можна зробити з одного опису, ми можемо створити багато об’єктів з класу.
Як визначити клас у Котліні?
Для визначення класу в Kotlin class
використовується ключове слово:
клас ClassName (// властивість // функція-член…)
Ось приклад:
клас Lamp (// властивість (член даних) private var isOn: Boolean = false // функція члена fun turnOn () (isOn = true) // функція члена fun TurnOff () (isOn = false))
Тут ми визначили клас під назвою Лампа.
Клас має одну властивість isOn (визначається так само, як змінна), і дві функції-члени turnOn()
і turnOff()
.
Рекомендуємо прочитати: Функції Kotlin
У Котліні або властивість має бути ініціалізовано, або її потрібно оголосити abstract
( Щоб дізнатись більше, відвідайте: Абстрактний клас Котліна). У наведеному вище прикладі властивість isOn ініціалізується до false
.
Класи, об'єкти, властивості, функції-члени тощо можуть мати модифікатори видимості. Наприклад, властивість isOn є приватною. Це означає, що властивість isOn можна змінити лише всередині класу Lamp.
Іншими модифікаторами видимості є:
private
- видимий (доступний) лише зсередини класу.public
- видно скрізь.protected
- видимий для класу та його підкласу.internal
- будь-який клієнт всередині модуля може отримати до них доступ.
Ви дізнаєтеся про модифікатори protected
та internal
модифікатори пізніше у статті про модифікатори видимості Kotlin.
If you do not specify the visibility modifier, it will be public
by default.
In the above program, turnOn()
and turnOff()
member functions are public
whereas, isOn property is private.
Kotlin Objects
When class is defined, only the specification for the object is defined; no memory or storage is allocated.
To access members defined within the class, you need to create objects. Let's create objects of Lamp class.
class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class )
This program creates two objects l1 and l2 of class Lamp. The isOn property for both lamps l1 and l2 will be false
.
How to access members?
You can access properties and member functions of a class by using .
notation. For example,
l1.turnOn()
This statement calls turnOn() function for l1 object.
Let's take another example:
l2.isOn = true
Here, we tried to assign true
to isOn property of l2 object. Note that, isOn property is private
, and if you try to access isOn from outside the class, an exception is thrown.
Example: Kotlin Class and Object
class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus(lamp: String) ( if (isOn == true) println("$lamp lamp is on.") else println("$lamp lamp is off.") ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") )
When you run the program, the output will be:
l1 Lamp is on. l2 Lamp is off.
In the above program,
Lamp
class is created.- The class has a property isOn and three member functions
turnOn()
,turnOff()
anddisplayLightStatus()
. - Two objects l1 and l2 of Lamp class are created in the
main()
function. - Here,
turnOn()
function is called using l1 object:l1.turnOn()
. This method sets isOn instance variable of l1 object totrue
. - And,
turnOff()
function is called using l2 object:l1.turnOff()
. This method sets isOff instance variable of l2 object tofalse
. - Потім
displayLightStatus()
для об’єктів l1 та l2 викликається функція, яка друкує відповідне повідомлення залежно від того, чи властивість isOn є істинним чиfalse
.
Зверніть увагу, що властивість isOn ініціалізується false
всередині класу. Коли створюється об'єкт класу, властивість isOn для об'єкта ініціалізується false
автоматично. Отже, необов’язково для об’єкта l2 викликати turnOff()
властивість isOn до false
.
Наприклад:
class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus() ( if (isOn == true) println("lamp is on.") else println("lamp is off.") ) ) fun main(args: Array) ( val lamp = Lamp() lamp.displayLightStatus() )
Коли ви запускаєте програму, результат буде:
лампа вимкнена.
Ця стаття - лише вступ до об’єктно-орієнтованого програмування в Котліні. Перевірте ці глави послідовно, щоб дізнатись більше:
- Конструктори і ініціалізатори Kotlin
- Котлін це ключове слово
- Вкладений клас Котліна