V tomto článku vám predstavíme objektovo orientované programovanie v Kotline. Dozviete sa, čo je to trieda, ako vytvárať objekty a používať ich vo svojom programe.
Kotlin podporuje funkčné aj objektovo orientované programovanie.
Kotlin podporuje funkcie, ako sú funkcie vyššieho rádu, typy funkcií a lambdas, čo z neho robí skvelú voľbu pre prácu vo funkčnom štýle programovania. O týchto koncepciách sa dozviete v ďalších kapitolách. Tento článok sa zameria na objektovo orientovaný štýl programovania v Kotline.
Objektovo orientované programovanie (OOP)
V objektovo orientovanom štýle programovania môžete zložitým problémom rozdeliť vytváranie objektov na menšie množiny.
Tieto objekty zdieľajú dve charakteristiky:
- štát
- správanie
Zoberme si niekoľko príkladov:
- Lampa je predmet
- Môže byť v zapnutom alebo vypnutom stave.
- Môžete
turn on
aturn off
lampa (správanie).
- Bicykel je predmetom
- Má aktuálny prevodový stupeň, dve kolesá, počet prevodových stupňov atď.
- Má správanie pri brzdení, akcelerácii, zmene prevodového stupňa atď.
Dozviete sa ďalšie podrobnosti o objektovo orientovanom programovaní, ako sú: zapuzdrovanie dát, dedičnosť a polymorfizmus. Tento článok sa zameria na základné veci, ktoré majú zjednodušiť prácu.
Odporúčame prečítať: Čo je to predmet?
Kotlinova trieda
Predtým, ako vytvoríte objekty v Kotline, musíte definovať triedu.
Trieda je návrhom objektu.
Triedu si môžeme predstaviť ako náčrt (prototyp) domu. Obsahuje všetky podrobnosti o podlahách, dverách, oknách atď. Na základe týchto popisov staviame dom. Dom je objekt.
Pretože z rovnakého popisu je možné vyrobiť mnoho domov, môžeme z triedy vytvoriť veľa objektov.
Ako definovať triedu v Kotline?
Na definovanie triedy v Kotline class
sa používa kľúčové slovo:
trieda ClassName (// vlastnosť // členská funkcia …)
Tu je príklad:
class Lamp (// property (data member) private var isOn: Boolean = false // member function fun turnOn () (isOn = true) // member function fun turnOff () (isOn = false))
Tu sme definovali triedu s názvom Lampa.
Trieda má jednu vlastnosť isOn (definovanú rovnako ako premenná) a dve členské funkcie turnOn()
a turnOff()
.
Odporúčame prečítať : Kotlinove funkcie
V Kotline musí byť vlastnosť inicializovaná alebo musí byť deklarovaná abstract
(ďalšie informácie nájdete na webovej stránke : Kotlin Abstract Class). Vo vyššie uvedenom príklade je vlastnosť isOn inicializovaná na false
.
Triedy, objekty, vlastnosti, členské funkcie atď. Môžu mať modifikátory viditeľnosti. Napríklad vlastnosť isOn je súkromná. To znamená, že vlastnosť isOn je možné zmeniť iba z triedy Lamp.
Ďalšie modifikátory viditeľnosti sú:
private
- viditeľné (prístupné) iba z vnútra triedy.public
- viditeľné všade.protected
- viditeľné pre triedu a jej podtriedu.internal
- má k nim prístup ktorýkoľvek klient vo vnútri modulu.
Dozviete sa o protected
a internal
modifikátory neskôr Kotlin modifikátory viditeľnosti článku.
Ak neurčíte modifikátor viditeľnosti, bude to public
predvolene.
Vo vyššie uvedenom programe, turnOn()
a turnOff()
funkcie členov sú public
vzhľadom k tomu, nehnuteľnosť Ison je súkromný.
Kotlinove objekty
Keď je definovaná trieda, je definovaná iba špecifikácia pre objekt; nie je pridelená žiadna pamäť alebo úložisko.
Pre prístup k členom definovaným v rámci triedy musíte vytvoriť objekty. Vytvorme objekty triedy Lampa.
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 )
Tento program vytvorí dva objekty l1 a l2 triedy Lamp. Vlastnosť isOn pre obidve žiarovky l1 a l2 bude false
.
Ako získať prístup k členom?
K vlastnostiam a členským funkciám triedy môžete pristupovať pomocou .
notácie. Napríklad,
l1.turnOn ()
Toto vyhlásenie volá funkciu turnOn () pre objekt l1.
Zoberme si ďalší príklad:
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
. - Potom
displayLightStatus()
sa volá funkcia pre objekty l1 a l2, ktorá vytlačí príslušné správy podľa toho, či je vlastnosť isOn true alebofalse
.
Všimnite si, že vlastnosť isOn je inicializovaná do false
vnútra triedy. Keď sa vytvorí objekt triedy, false
automaticky sa inicializuje vlastnosť isOn pre objekt . Nie je teda potrebné, aby l2 objekt volal, turnOff()
aby nastavil vlastnosť isOn na false
.
Napríklad:
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() )
Po spustení programu bude výstup:
lampa nesvieti.
Tento článok je iba úvodom do objektovo orientovaného programovania v Kotline. Ak sa chcete dozvedieť viac, pozrite si postupne tieto kapitoly.
- Konštruktory a inicializátory Kotlin
- Kotlin toto kľúčové slovo
- Vnorená trieda Kotlin