Ebben a cikkben bemutatja az objektum-orientált programozást Kotlinban. Megtudhatja, mi az osztály, hogyan hozhat létre objektumokat és hogyan használhatja azokat a programjában.
Kotlin mind a funkcionális, mind az objektum-orientált programozást támogatja.
A Kotlin olyan funkciókat támogat, mint a magasabb rendű funkciók, a függvénytípusok és a lambdas, ami nagyszerű választás a funkcionális programozási stílusban történő munkavégzéshez. A későbbi fejezetekben megismerheti ezeket a koncepciókat. Ez a cikk az objektum-orientált programozási stílusra összpontosít Kotlinban.
Objektum-orientált programozás (OOP)
Objektumorientált programozási stílusban az összetett problémákat objektumok létrehozásával kisebb halmazokra oszthatja.
Ezeknek az objektumoknak két jellemzőjük van:
- állapot
- viselkedés
Vegyünk néhány példát:
- A lámpa egy tárgy
- Be- vagy kikapcsolt állapotban lehet.
- Tud
turn on
ésturn off
lámpa (viselkedés).
- A kerékpár egy tárgy
- Jelenlegi sebességváltója, két kereke, a sebességfokozatok száma stb.
- Fékező, gyorsító, sebességváltó stb. Viselkedése van.
Megismerheti az objektum-orientált programozás olyan jellemzőit, mint: az adatok beágyazása, az öröklődés és a polimorfizmus, ahogy folytatjuk. Ez a cikk az egyszerűségre törekszik az alapokról.
Ajánlott olvasmány: Mi az a tárgy?
Kotlin osztály
Mielőtt objektumokat hozna létre Kotlinban, meg kell határoznia egy osztályt.
Az osztály az objektum tervrajza.
Az osztályra úgy gondolhatunk, mint egy ház vázlatára (prototípusára). Minden részletet tartalmaz a padlókról, ajtókról, ablakokról stb. Ezen leírások alapján építjük a házat. A ház az objektum.
Mivel sok ház elkészíthető ugyanabból a leírásból, sok objektumot létrehozhatunk egy osztályból.
Hogyan lehet osztályt definiálni Kotlinban?
Osztály meghatározásához Kotlinban a következő class
kulcsszót használjuk:
class ClassName (// tulajdonság // tag függvény …)
Íme egy példa:
class Lamp (// tulajdonság (adattag) privát var isOn: Boolean = hamis // tag függvény fun turnOn () (isOn = true) // tag függvény fun turnOff () (isOn = hamis))
Itt definiáltunk egy Lamp nevű osztályt.
Az osztály egyik tulajdonság Ison (meghatározott ugyanúgy, mint a változó), és a két tag funkciók turnOn()
és turnOff()
.
Ajánlott olvasmány: Kotlin funkciói
Kotlinban vagy az ingatlant inicializálni kell, vagy be kell jelenteni abstract
( További információkért látogasson el a Kotlin Abstract Class oldalra). A fenti példában az isOn tulajdonság inicializálva van false
.
Az osztályok, objektumok, tulajdonságok, tagfüggvények stb. Láthatósági módosítóval rendelkezhetnek. Például az isOn tulajdonság privát. Ez azt jelenti, hogy az isOn tulajdonság csak a Lamp osztály belsejéből módosítható.
További láthatóság-módosítók:
private
- csak az osztály belsejéből látható (elérhető).public
- mindenhol látható.protected
- az osztály és annak alosztálya számára látható.internal
- a modulon belüli bármely kliens hozzáférhet hozzájuk.
A későbbiekben a Kotlin láthatóságot módosító cikkében megismerheti protected
és internal
módosíthatja azokat.
Ha nem adja meg a láthatóság módosítót, akkor public
az alapértelmezés szerint lesz .
A fenti program, turnOn()
és turnOff()
tagja funkciók public
mivel Easmon ingatlan magán.
Kotlin Objects
Osztály megadásakor csak az objektum specifikációja kerül meghatározásra; nincs memória vagy tárhely kiosztva.
Az osztályon belül meghatározott tagok eléréséhez objektumokat kell létrehoznia. Készítsünk Lamp osztályú objektumokat.
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 )
Ez a program két L1 és L2 osztályú objektumot hoz létre. Az l1 és az l2 lámpa isOn tulajdonsága lesz false
.
Hogyan lehet elérni a tagokat?
Az osztály tulajdonságait és tagfüggvényeit a .
jelölés használatával érheti el . Például,
l1.turnOn ()
Ez az utasítás meghívja a turnOn () függvényt az l1 objektumhoz.
Vegyünk egy másik példát:
l2.isOn = igaz
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
. - Ezután a
displayLightStatus()
függvény meghívásra kerül az l1 és l2 objektumokra, amelyek megfelelő üzenetet nyomtatnak, attól függően, hogy az isOn tulajdonság igaz-e vagy semfalse
.
Vegye figyelembe, hogy az isOn tulajdonság inicializálva false
van az osztály belsejében. Az osztály objektumának létrehozásakor az objektum isOn tulajdonsága false
automatikusan inicializálódik . Tehát nem szükséges, hogy az l2 objektum meghívja turnOff()
az isOn tulajdonságot false
.
Például:
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() )
A program futtatásakor a kimenet a következő lesz:
a lámpa nem világít.
Ez a cikk csak bevezetés az objektum-orientált programozáshoz Kotlinban. További információkért ellenőrizze egymás után ezeket a fejezeteket:
- Kotlin kivitelezők és inicializálók
- Kotlin ezt a kulcsszót
- Kotlin beágyazott osztály