Kotlin osztály és objektumok (példákkal)

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:

  1. A lámpa egy tárgy
    • Be- vagy kikapcsolt állapotban lehet.
    • Tud turn onés turn offlámpa (viselkedés).
  2. 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ő classkulcsszó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 internalmódosíthatja azokat.

Ha nem adja meg a láthatóság módosítót, akkor publicaz alapértelmezés szerint lesz .

A fenti program, turnOn()és turnOff()tagja funkciók publicmivel 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() 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.
  • 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 sem false.

Vegye figyelembe, hogy az isOn tulajdonság inicializálva falsevan az osztály belsejében. Az osztály objektumának létrehozásakor az objektum isOn tulajdonsága falseautomatikusan 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

érdekes cikkek...