Android Academy · leksjon

Konstruktører og init

Opprett og initialiser objekter.

Leksjon 3 av 413 trinn

Konstruktører og init er en gratis leksjon i Android Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Android Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Android Academy inneholder totalt 4 leksjoner.

Hva er en konstruktør?

En konstruktør er spesiell kode som kjøres når du oppretter et objekt. Den setter opp startverdiene for objektet.

I Kotlin skrives hovedkonstruktøren rett ved siden av klassenavnet.

Primærkonstruktøren

Primærkonstruktøren står i parentes etter klassenavnet. Du sender inn verdier når du oppretter objektet.

Her krever Dog et navn når objektet konstrueres.

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

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

Egenskaper i konstruktøren

Hvis du legger til val eller var foran en konstruktørparameter, blir den automatisk til en egenskap.

Dette er den vanligste og mest konsise Kotlin-stilen.

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

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

Standardverdier i konstruktøren

Konstruktørparametere kan også ha standardverdier. Da kan den som kaller konstruktøren, utelate dem.

Her blir age satt til 0 som standard hvis ingen verdi oppgis.

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

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

init-blokken

En init-blokk kjøres som en del av primærkonstruktøren. Bruk den til oppsettslogikk som ikke får plass på én enkelt linje med en egenskap.

Den kan lese konstruktørparameterne.

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

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

Validere i init

En vanlig bruk av init er å kontrollere inndataene. Her hindrer vi en negativ alder ved hjelp av require.

Hvis kontrollen mislykkes, blir objektet aldri opprettet.

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

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

Rekkefølgen for kjøring

Egenskapsinitialiseringer og init-blokker kjøres ovenfra og ned, i den rekkefølgen de står i klassen.

Dette er viktig når en linje avhenger av en verdi som er angitt ovenfor.

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

fun main() {
    Demo()
}

Beregnede egenskaper

Du kan beregne en egenskap fra konstruktørverdier inne i klassekroppen.

Her er area avledet fra width og height.

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

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

Sekundærkonstruktører

En klasse kan også ha sekundærkonstruktører som bruker nøkkelordet constructor. De må delegere til primærkonstruktøren med this(...).

De er mindre vanlige fordi standardverdier vanligvis er tilstrekkelig.

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

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

Bruke det nye objektet

Når konstruktøren og init er kjørt, er objektet klart til bruk. Du kan lese egenskapene og kalle metodene med en gang.

Her setter konstruktøren opp en saldo, og en metode trekker et beløp fra den.

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

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

Konstruktører legger grunnlaget

Konstruktører og init-blokker sørger for at hvert objekt starter i en gyldig tilstand.

  • Primærkonstruktør: deklarerer og mottar verdier.
  • init: kjører oppsett og validering.

Dette hindrer halvferdige objekter i appen din.

Hurtigsjekk

Test forståelsen din av konstruktører og init.

Oppsummering

Du har lært om primærkonstruktøren, hvordan du deklarerer egenskaper med val/var i den, og hvordan du gir dem standardverdier.

init-blokken håndterer oppsett og validering og kjøres ovenfra og ned sammen med egenskapsinitialiseringene. Deretter skal du bli kjent med dataklasser, som genererer denne standardkoden for deg.

Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
36
Leksjoner
152

Ofte stilte spørsmål

Er leksjonen «Konstruktører og init» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Android Academy, inkludert «Konstruktører og init», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Android Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Konstruktører og init»?

Opprett og initialiser objekter. Du øver på Android Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Android Academy?

Ingen tidligere erfaring er nødvendig. Android Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Konstruktører og init»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Android Academy-leksjonen?

Ja. Alle Android Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Deklarer funksjoner
  2. Klasser og egenskaper
  3. Konstruktører og init
  4. Dataklasser
← Tilbake til Android Academy