Клас и обекти на Kotlin (с примери)

В тази статия ще се запознаете с обектно-ориентираното програмиране в Kotlin. Ще научите какво е клас, как да създавате обекти и да го използвате във вашата програма.

Kotlin поддържа както функционално, така и обектно-ориентирано програмиране.

Kotlin поддържа функции като функции от по-висок ред, типове функции и ламбда, което го прави чудесен избор за работа във функционален стил на програмиране. Ще научите за тази концепция в следващите глави. Тази статия ще се фокусира върху обектно-ориентирания стил на програмиране в Kotlin.

Обектно-ориентирано програмиране (ООП)

В обектно-ориентирания стил на програмиране можете да разделите сложен проблем на по-малки набори чрез създаване на обекти.

Тези обекти споделят две характеристики:

  • държава
  • поведение

Нека вземем няколко примера:

  1. Лампата е обект
    • Може да е в състояние на включване или изключване.
    • Можете turn onи turn offлампа (поведение).
  2. Велосипедът е обект
    • Има текуща предавка, две колела, брой предавки и т.н.
    • Той има поведение при спиране, ускоряване, смяна на предавките и т.н.

Ще научите за детайлните характеристики на обектно-ориентираното програмиране като: капсулиране на данни, наследяване и полиморфизъм, докато продължаваме. Тази статия ще се фокусира върху основите, за да улесни нещата.

Препоръчително четене: Какво е обект?

Котлин клас

Преди да създадете обекти в Kotlin, трябва да дефинирате клас.

Класът е план за обекта.

Можем да възприемаме класа като скица (прототип) на къща. Той съдържа всички подробности за подовете, вратите, прозорците и т.н. Въз основа на тези описания ние изграждаме къщата. Къщата е обектът.

Тъй като много къщи могат да бъдат направени от едно и също описание, ние можем да създадем много обекти от клас.

Как да дефинирам клас в Kotlin?

За дефиниране на клас в Kotlin classсе използва ключова дума:

 class ClassName (// свойство // член функция …) 

Ето пример:

 class Lamp (// свойство (член на данни) private var isOn: Boolean = false // функция на член fun funOnOn () (isOn = true) // функция член fun funOffOff () (isOn = false))

Тук дефинирахме клас на име Лампа.

Класът има едно свойство isOn (дефинирано по същия начин като променлива) и две функции-членове turnOn()и turnOff().

Препоръчително четене: Функциите на Kotlin

В Kotlin или свойството трябва да бъде инициализирано, или трябва да бъде декларирано abstract( Посетете: Kotlin Abstract Class, за да научите повече). В горния пример свойството isOn се инициализира в false.

Класовете, обектите, свойствата, функцията на член и т.н. могат да имат модификатори на видимостта. Например, свойството isOn е частно. Това означава, че свойството isOn може да бъде променено само от клас Lamp.

Други модификатори на видимостта са:

  • private - видим (може да бъде достъпен) само от клас.
  • public - видими навсякъде.
  • protected - видими за класа и неговия подклас.
  • internal - всеки клиент вътре в модула може да има достъп до тях.

Ще научите за protectedи internalмодификаторите по-късно в статията за модификатори на видимостта на Kotlin.

Ако не посочите модификатора на видимостта, той ще бъде publicпо подразбиране.

В горната програма, turnOn()а turnOff()функциите на членове са, publicдокато isOn свойството е частно.

Котлин обекти

Когато е дефиниран клас, се дефинира само спецификацията за обекта; не е разпределена памет или памет.

За достъп до членове, дефинирани в класа, трябва да създадете обекти. Нека създадем обекти от клас Lamp.

 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 )

Тази програма създава два обекта l1 и l2 от клас Lamp. Свойството isOn и за двете лампи l1 и l2 ще бъде false.

Как да вляза в членовете?

Можете да получите достъп до свойства и функции на членове на клас, като използвате .нотация. Например,

 l1.turnOn ()

Този оператор извиква функцията turnOn () за обект l1.

Да вземем друг пример:

 l2.isOn = вярно

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. Проверете последователно тези глави, за да научите повече:

  • Kotlin Конструктори и инициатори
  • Kotlin тази ключова дума
  • Котлин вложен клас

Интересни статии...