Клас і предмети Котліна (з прикладами)

У цій статті ви ознайомитесь з об’єктно-орієнтованим програмуванням у Kotlin. Ви дізнаєтесь, що таке клас, як створювати об’єкти та використовувати його у своїй програмі.

Kotlin підтримує як функціональне, так і об'єктно-орієнтоване програмування.

Kotlin підтримує такі функції, як функції вищого порядку, типи функцій та лямбда, що робить його чудовим вибором для роботи у стилі функціонального програмування. Ви дізнаєтесь про ці поняття у наступних розділах. Ця стаття буде зосереджена на об’єктно-орієнтованому стилі програмування в Котліні.

Об'єктно-орієнтоване програмування (ООП)

В об’єктно-орієнтованому стилі програмування ви можете розділити складну задачу на менші набори, створюючи об’єкти.

Ці об'єкти мають дві характеристики:

  • держава
  • поведінки

Візьмемо кілька прикладів:

  1. Лампа - це предмет
    • Це може бути як увімкнений, так і вимкнений стан.
    • Можна turn onі turn offлампа (поведінка).
  2. Велосипед - це предмет
    • Він має поточну передачу, два колеса, кількість передач тощо.
    • Він має гальмування, прискорення, перемикання передач тощо.

Ви дізнаєтесь про детальні особливості об’єктно-орієнтованого програмування, такі як: інкапсуляція даних, успадкування та поліморфізм, як ми продовжуємо. Ця стаття буде зосереджена на основних елементах, щоб зробити речі простими.

Рекомендована література: Що таке предмет?

Клас Котліна

Перш ніж створювати об'єкти в 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() and displayLightStatus().
  • 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 to true.
  • And, turnOff() function is called using l2 object: l1.turnOff(). This method sets isOff instance variable of l2 object to false.
  • Потім 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
  • Котлін це ключове слово
  • Вкладений клас Котліна

Цікаві статті...