Android Academy · Oppitunti

Konstruktorit ja init

Luokaa ja alustakaa olioita.

Oppitunti 3/413 vaihetta

Konstruktorit ja init on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.

Mikä on konstruktori?

Konstruktori on erityistä koodia, joka suoritetaan oliota luotaessa. Se määrittää olion alkuarvot.

Kotlinissa pääkonstruktori kirjoitetaan heti luokan nimen yhteyteen.

Ensisijainen konstruktori

Ensisijainen konstruktori kirjoitetaan sulkeisiin luokan nimen jälkeen. Arvot välitetään oliota luotaessa.

Tässä Dog vaatii nimen luonnin yhteydessä.

class Dog(name: String) {
    val dogName = name
}

fun main() {
    val d = Dog("Rex")
    println(d.dogName)
}

Ominaisuudet konstruktorissa

Kun konstruktoriparametrin eteen lisätään val tai var, siitä tulee automaattisesti ominaisuus.

Tämä on Kotlinin yleisin ja tiiviin kirjoitustapa.

class Dog(val name: String, var age: Int)

fun main() {
    val d = Dog("Rex", 3)
    println(d.name + " is " + d.age)
}

Konstruktorin oletusarvot

Konstruktoriparametreilla voi olla myös oletusarvoja. Tällöin kutsuja voi jättää ne pois.

Tässä age saa oletusarvoksi 0, jos arvoa ei anneta.

class Dog(val name: String, var age: Int = 0)

fun main() {
    val d = Dog("Max")
    println(d.age)
}

init-lohko

init-lohko suoritetaan osana ensisijaista konstruktoria. Käyttäkää sitä alustustoimintaan, joka ei mahdu yhdelle ominaisuusriville.

Se voi lukea konstruktoriparametreja.

class Dog(val name: String) {
    init {
        println("Created dog: " + name)
    }
}

fun main() {
    Dog("Rex")
}

Tarkistaminen init-lohkossa

init-lohkoa käytetään usein syötteiden tarkistamiseen. Tässä negatiivinen ikä estetään require-funktion avulla.

Jos tarkistus epäonnistuu, oliota ei luoda.

class Person(val age: Int) {
    init {
        require(age >= 0) { "Age cannot be negative" }
    }
}

fun main() {
    val p = Person(25)
    println(p.age)
}

Suoritusjärjestys

Ominaisuuksien alustajat ja init-lohkot suoritetaan ylhäältä alas siinä järjestyksessä, jossa ne esiintyvät luokassa.

Tällä on merkitystä, kun jokin rivi riippuu yläpuolella määritetystä arvosta.

class Demo {
    val a = 1
    init { println("a is " + a) }
    val b = a + 1
    init { println("b is " + b) }
}

fun main() {
    Demo()
}

Lasketut ominaisuudet

Voitte laskea ominaisuuden konstruktorin arvoista luokan rungon sisällä.

Tässä area johdetaan arvoista width ja height.

class Rect(val width: Int, val height: Int) {
    val area = width * height
}

fun main() {
    println(Rect(3, 4).area)
}

Toissijaiset konstruktorit

Luokalla voi olla myös toissijaisia konstruktoreja, joissa käytetään constructor-avainsanaa. Niiden on delegoitava ensisijaiselle konstruktorille komennolla this(...).

Niitä käytetään harvemmin, koska oletusarvot riittävät yleensä.

class Dog(val name: String) {
    constructor() : this("Unknown")
}

fun main() {
    println(Dog().name)
}

Uuden olion käyttäminen

Kun konstruktori ja init on suoritettu, olio on valmis käytettäväksi. Sen ominaisuuksia voi lukea ja metodeja kutsua heti.

Tässä konstruktori alustaa saldon ja metodi käyttää sitä.

class Account(var balance: Int) {
    fun spend(amount: Int) {
        balance = balance - amount
    }
}

fun main() {
    val acc = Account(100)
    acc.spend(30)
    println(acc.balance)
}

Konstruktorit luovat perustan

Konstruktorit ja init-lohkot varmistavat, että jokainen olio aloittaa kelvollisessa tilassa.

  • Ensisijainen konstruktori: määrittää ja vastaanottaa arvot.
  • init: suorittaa alustuksen ja tarkistuksen.

Näin sovellukseen ei synny puutteellisesti luotuja olioita.

Pikatarkistus

Testaa ymmärryksesi konstruktoreista ja init-lohkosta.

Kertaus

Opit ensisijaisen konstruktorin, ominaisuuksien määrittämisen val- tai var-määreellä siinä sekä oletusarvojen antamisen.

init-lohko hoitaa alustuksen ja tarkistuksen, ja se suoritetaan ylhäältä alas yhdessä ominaisuuksien alustajien kanssa. Seuraavaksi tutustut dataluokkiin, jotka luovat tämän pohjakoodin puolestasi.

Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
36
Oppitunnit
152

Usein kysytyt kysymykset

Onko oppitunti ”Konstruktorit ja init” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Konstruktorit ja init”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Konstruktorit ja init”?

Luokaa ja alustakaa olioita. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Konstruktorit ja init”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Android Academy-oppitunnilla?

Kyllä. Jokainen Android Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Funktioiden määrittäminen
  2. Luokat ja ominaisuudet
  3. Konstruktorit ja init
  4. Dataclass-luokat
← Takaisin: Android Academy