Kotlin Konstruktorok

1. Áttekintés

Ebben az oktatóanyagban alaposan megvizsgáljuk a kotlini kivitelezőket.

Kezdjük a koncepció gyors összefoglalásával: konstruktorokat használunk objektumok létrehozására. Ezek úgy néznek ki, mint a metódusdeklarációk, de mindig ugyanaz a név, mint az osztály, és nem adnak vissza semmit.

A Kotlin-projekt beállításához olvassa el bemutatkozó bemutatónkat.

Kotlinban egy osztálynak lehet elsődleges konstruktora és egy vagy több további másodlagos konstruktora.

A következő szakaszokban áttekintjük az egyes típusokat és a hozzájuk tartozó fogalmakat.

2. Elsődleges kivitelező

Az objektum létrehozásának első módja Kotlinban egy elsődleges konstruktor használatával történik.

Ez az osztályfejléc része. A paraméterek lehetnek osztálymezők is, amelyeket az osztálydeklaráció után helyezünk el.

Nézzünk meg egy alaposztály deklarációt, két tulajdonsággal és egy elsődleges konstruktorral:

osztály Személy konstruktor (val név: karakterlánc, val kor: Int? = null)

Ebben a példában a tulajdonságokon keresztül deklaráltuk a tulajdonságokat val kulcsszó. Ez ugyanúgy viselkedik, mint a reguláris változók, ezt megemlítve val tulajdonságai csak olvashatók (Java végső kulcsszó megfelelője).

Ha később szeretnénk megváltoztatni a referenciát, akkor a var kulcsszó helyett. Az elsődleges konstruktor mezőjének típusát azonban nem hagyhatjuk ki, mivel ennek egyértelműnek kell lennie.

Bizonyos esetekben a konstruktőr kulcsszó. Ez csak két esetben kötelező: amikor annotációkat használunk, mint a @Autowired vagy hozzáférés módosítókhoz hasonló magán vagy védett.

Ezenkívül felhasználhatjuk a Kotlin alapértelmezett paramétereit a konstruktorokban.

Ezután nézzük meg, hogyan használhatjuk az elsődleges konstruktort:

val person = Személy ("John") val personWithAge = Személy ("Mark", 22)

Ezt láthatjuk az osztály neve konstruktor meghívás. Nincs szükség a új kulcsszó.

Nézzünk meg egy konstruktor deklaráció Java megfelelőjét is:

osztály PersonJava {végleges karakterlánc neve; végső egész életkor; public PersonJava (karakterlánc neve) {this.name = név; this.age = null; } public PersonJava (karakterlánc neve, egész kor) {this.név = név; ez.kor = életkor; }}

Mint láthatja, a Java-nak sokkal több kódra lenne szüksége ugyanazon eredmény eléréséhez.

2.1. Elsődleges kivitelezők a JVM-en

Felhívjuk figyelmét, hogy a fordító egy további konstruktort generál, paraméterek nélkül a JVM-en. Ebből a célból példányosít egy objektumot alapértelmezett értékekkel.

Így Kotlin jól együttműködhet olyan könyvtárakkal, mint a Jackson vagy a JPA, amelyek a no-args konstruktort használják osztálypéldányok létrehozására:

osztály Személy (név: String = "")

3. Tulajdonságok inicializálása a konstruktőri paraméterekből

Az osztálytörzs tulajdonság-inicializálói felhasználhatják az elsődleges konstruktor paramétereket.

Átalakuljunk név hoz upperCaseName ingatlan:

osztály Személy (val név: Karakterlánc, val kor: Int? = null) {val upperCaseName: Karakterlánc = név.toUpperCase ()}

A kimenetet a konzolon láthatjuk a második hozzáadásával benne Blokk:

init {println ("A nagybetű neve: $ upperCaseName")}

4. Inicializáló blokkok

Nem helyezhetünk el kódot az elsődleges konstruktorban.

Néha azonban valamilyen inicializáló kódot végre kell hajtanunk. Jó hely egy inicializáló blokk, amely előtaggal a benne kulcsszó.

Az inicializáló blokkot az elsődleges konstruktor után hívják meg. Ezen a helyen osztályterületeket is elérhetünk.

Egy osztálynak lehet egy vagy több benne blokkok.

Csatoljuk az inicializáló blokkot a sajátunkhoz Személy osztály:

init {println ("Helló, $ name vagyok") if (vezetéknév.isEmpty ()) {dobja IllegalArgumentException ("A vezetéknév nem lehet üres!")}

Ezután, amikor létrehozunk egy Személy osztályú objektumot, a konzolon látni fogjuk:

Helló, John vagyok

Dobnánk IllegalArgumentException az üresekért vezetéknév.

Amikor sokunk van benne blokkokat, ugyanabban a sorrendben hajtják végre, mint ahogyan az osztálytestben megjelennek.

5. Másodlagos kivitelező

Egy Kotlin osztályban egy vagy több másodlagos konstruktort is deklarálhatunk.A másodlagos konstruktorokat a konstruktőr kulcsszó:

class Car {val id: String val típus: String konstruktor (id: String, type: String) {this.id = id this.type = type}}

És az alapvető használat:

fun main (args: Array) {val car = Car ("1", "sport") val suvCar = Car ("2", "suvCar")} 

Minden másodlagos konstruktornak delegálnia kell az elsődleges konstruktort. Ezt meg fogjuk tenni ez kulcsszó.

Helyezzük át ingatlanjainkat a elsődleges kivitelező és módosítani másodlagos kivitelező:

class Car (val id: String, val type: String) {konstruktor (id: String): ez (id, "ismeretlen")}

6. Konstruktorok és öröklés

Használhatjuk a szuperosztály elsődleges konstruktorát.

Ne feledje, hogy Kotlinban az összes osztály az végső alapértelmezés szerint. Ez azt jelenti, hogy hozzá kell adnunk a nyisd ki kulcsszó, hogy örökölhessük a mi Személy osztály.

Tegyünk hozzá egy Munkavállaló osztály, amely a Személy osztály. Mindkettő elsődleges konstruktort használ:

osztály Munkavállaló (név: karakterlánc, fizetés: Int): Személy (név) 

Ezzel elhaladunk a név elsődleges kivitelezőjéhez Személy osztály. Ezenkívül hozzáadunk egy új nevű mezőt fizetés ban,-ben Munkavállaló osztály.

7. Következtetés

Ebben a rövid cikkben megvitattuk a konstruktorok kotlin nyelvű létrehozásának különféle módjait. Mezőségünket sokféle módon, kívánságaink szerint tudjuk példányosítani.

Valamennyi példánk megvalósítása megtalálható a Github projektben.

Ha többet szeretne tudni magáról a Kotlin funkcióiról, olvassa el a Kotlin bemutatkozását.


$config[zx-auto] not found$config[zx-overlay] not found