В тази статия ще се запознаете с обектно-ориентираното програмиране в Kotlin. Ще научите какво е клас, как да създавате обекти и да го използвате във вашата програма.
Kotlin поддържа както функционално, така и обектно-ориентирано програмиране.
Kotlin поддържа функции като функции от по-висок ред, типове функции и ламбда, което го прави чудесен избор за работа във функционален стил на програмиране. Ще научите за тази концепция в следващите глави. Тази статия ще се фокусира върху обектно-ориентирания стил на програмиране в Kotlin.
Обектно-ориентирано програмиране (ООП)
В обектно-ориентирания стил на програмиране можете да разделите сложен проблем на по-малки набори чрез създаване на обекти.
Тези обекти споделят две характеристики:
- държава
- поведение
Нека вземем няколко примера:
- Лампата е обект
- Може да е в състояние на включване или изключване.
- Можете
turn on
иturn off
лампа (поведение).
- Велосипедът е обект
- Има текуща предавка, две колела, брой предавки и т.н.
- Той има поведение при спиране, ускоряване, смяна на предавките и т.н.
Ще научите за детайлните характеристики на обектно-ориентираното програмиране като: капсулиране на данни, наследяване и полиморфизъм, докато продължаваме. Тази статия ще се фокусира върху основите, за да улесни нещата.
Препоръчително четене: Какво е обект?
Котлин клас
Преди да създадете обекти в 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()
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. Проверете последователно тези глави, за да научите повече:
- Kotlin Конструктори и инициатори
- Kotlin тази ключова дума
- Котлин вложен клас