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.