V tomto článku vás seznámíme s objektově orientovaným programováním v Kotlin. Dozvíte se, co je to třída, jak vytvářet objekty a používat je ve vašem programu.
Kotlin podporuje funkční i objektově orientované programování.
Kotlin podporuje funkce, jako jsou funkce vyššího řádu, typy funkcí a lambdas, což z něj dělá skvělou volbu pro práci ve stylu funkčního programování. O těchto pojmech se dozvíte v dalších kapitolách. Tento článek se zaměří na objektově orientovaný styl programování v Kotlin.
Objektově orientované programování (OOP)
V objektově orientovaném stylu programování můžete rozdělit složitý problém na menší sady vytvořením objektů.
Tyto objekty sdílejí dvě vlastnosti:
- Stát
- chování
Vezměme si několik příkladů:
- Lampa je objekt
- Může být v zapnutém nebo vypnutém stavu.
- Můžete
turn on
aturn off
lampa (chování).
- Jízdní kolo je objekt
- Má aktuální rychlostní stupeň, dvě kola, počet rychlostních stupňů atd.
- Má chování při brzdění, zrychlování, změně rychlostních stupňů atd.
Dozvíte se o podrobných funkcích objektově orientovaného programování, jako jsou: zapouzdření dat, dědičnost a polymorfismus. Tento článek se zaměří na základy, aby to bylo jednoduché.
Doporučená literatura: Co je to objekt?
Kotlin Class
Před vytvořením objektů v Kotlin musíte definovat třídu.
Třída je plán pro objekt.
Třídu si můžeme představit jako náčrt (prototyp) domu. Obsahuje všechny podrobnosti o podlahách, dveřích, oknech atd. Na základě těchto popisů stavíme dům. Dům je objekt.
Vzhledem k tomu, že ze stejného popisu lze vyrobit mnoho domů, můžeme z třídy vytvořit mnoho objektů.
Jak definovat třídu v Kotlin?
K definování třídy v Kotlin class
se používá klíčové slovo:
třída ClassName (// vlastnost // členská funkce…)
Zde je příklad:
class Lamp (// property (data member) private var isOn: Boolean = false // member function fun turnOn () (isOn = true) // member function fun turnOff () (isOn = false))
Zde jsme definovali třídu s názvem Lampa.
Třída má jednu vlastnost isOn (definovanou stejným způsobem jako proměnná) a dvě členské funkce turnOn()
a turnOff()
.
Doporučené čtení: Funkce Kotlin
V Kotlin musí být vlastnost buď inicializována, nebo musí být deklarována abstract
( návštěva: Kotlin Abstract Class, kde se dozvíte více). Ve výše uvedeném příkladu je vlastnost isOn inicializována na false
.
Třídy, objekty, vlastnosti, členské funkce atd. Mohou mít modifikátory viditelnosti. Například vlastnost isOn je soukromá. To znamená, že vlastnost isOn lze změnit pouze uvnitř třídy Lamp.
Další modifikátory viditelnosti jsou:
private
- viditelné (přístupné) pouze zevnitř třídy.public
- viditelné všude.protected
- viditelné pro třídu a její podtřídu.internal
- má k nim přístup jakýkoli klient uvnitř modulu.
Dozvíte se o protected
a internal
modifikátory později Kotlin modifikátory viditelnosti článku.
Pokud nezadáte modifikátor viditelnosti, bude public
ve výchozím nastavení.
Ve výše uvedeném programu turnOn()
a turnOff()
členské funkce jsou public
vzhledem k tomu, že vlastnost isOn je soukromá.
Kotlinovy objekty
Když je definována třída, je definována pouze specifikace pro objekt; není přidělena žádná paměť ani úložiště.
Pro přístup k členům definovaným ve třídě musíte vytvořit objekty. Pojďme vytvořit objekty třídy 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 vytváří dva objekty l1 a l2 třídy Lamp. Vlastnost isOn pro obě lampy l1 a l2 bude false
.
Jak získat přístup ke členům?
K vlastnostem a členským funkcím třídy můžete přistupovat pomocí .
notace. Například,
l1.turnOn ()
Toto prohlášení volá funkci turnOn () pro objekt l1.
Vezměme si další pří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
. - Poté
displayLightStatus()
se pro objekty l1 a l2 volá funkce, která vytiskne příslušnou zprávu podle toho, zda je vlastnost isOn true nebofalse
.
Všimněte si, že vlastnost isOn je inicializována na false
uvnitř třídy. Když je vytvořen objekt třídy, je vlastnost isOn pro objekt inicializována false
automaticky. Není tedy nutné, aby l2 objekt volal, turnOff()
aby nastavil vlastnost isOn na false
.
Napří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() )
Když spustíte program, výstup bude:
lampa nesvítí.
Tento článek je pouze úvodem do objektově orientovaného programování v Kotlinu. V následujících kapitolách se dozvíte více:
- Konstruktory a inicializátory Kotlin
- Kotlin toto klíčové slovo
- Vnořená třída Kotlin