Costruttori e init
Crei e inizializzi oggetti.
Costruttori e init è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.
Che cos'è un costruttore?
Un costruttore è codice speciale che viene eseguito quando crea un oggetto. Imposta i valori iniziali dell'oggetto.
In Kotlin, il costruttore principale viene scritto subito accanto al nome della classe.
Il costruttore primario
Il costruttore primario viene inserito tra parentesi dopo il nome della classe. I valori vengono passati quando si crea l'oggetto.
Qui Dog richiede un nome durante la costruzione.
class Dog(name: String) {
val dogName = name
}
fun main() {
val d = Dog("Rex")
println(d.dogName)
}Proprietà nel costruttore
Aggiungere val o var davanti a un parametro del costruttore lo trasforma automaticamente in una proprietà.
Questo è lo stile Kotlin più comune e conciso.
class Dog(val name: String, var age: Int)
fun main() {
val d = Dog("Rex", 3)
println(d.name + " is " + d.age)
}Valori predefiniti del costruttore
Anche i parametri del costruttore possono avere valori predefiniti. In questo modo chi chiama il costruttore può ometterli.
Qui age assume il valore predefinito 0 se non viene fornito.
class Dog(val name: String, var age: Int = 0)
fun main() {
val d = Dog("Max")
println(d.age)
}Il blocco init
Un blocco init viene eseguito nell'ambito del costruttore primario. Lo usi per la logica di configurazione che non può essere inserita in una sola riga di proprietà.
Può leggere i parametri del costruttore.
class Dog(val name: String) {
init {
println("Created dog: " + name)
}
}
fun main() {
Dog("Rex")
}Convalidare in init
Un uso comune di init consiste nel controllare gli input. Qui impediamo un'età negativa usando require.
Se il controllo fallisce, l'oggetto non viene mai creato.
class Person(val age: Int) {
init {
require(age >= 0) { "Age cannot be negative" }
}
}
fun main() {
val p = Person(25)
println(p.age)
}Ordine di esecuzione
Gli inizializzatori delle proprietà e i blocchi init vengono eseguiti dall'alto verso il basso, nell'ordine in cui compaiono nella classe.
Questo è importante quando una riga dipende da un valore impostato sopra di essa.
class Demo {
val a = 1
init { println("a is " + a) }
val b = a + 1
init { println("b is " + b) }
}
fun main() {
Demo()
}Proprietà calcolate
Può calcolare una proprietà a partire dai valori del costruttore all'interno del corpo della classe.
Qui area deriva da width e height.
class Rect(val width: Int, val height: Int) {
val area = width * height
}
fun main() {
println(Rect(3, 4).area)
}Costruttori secondari
Una classe può avere anche costruttori secondari usando la parola chiave constructor. Devono delegare al costruttore primario con this(...).
Sono meno comuni, perché di solito sono sufficienti i valori predefiniti.
class Dog(val name: String) {
constructor() : this("Unknown")
}
fun main() {
println(Dog().name)
}Usare il nuovo oggetto
Dopo l'esecuzione del costruttore e di init, l'oggetto è pronto per essere usato. Può leggere immediatamente le sue proprietà e chiamare i suoi metodi.
Qui il costruttore imposta un saldo e un metodo lo utilizza per effettuare una spesa.
class Account(var balance: Int) {
fun spend(amount: Int) {
balance = balance - amount
}
}
fun main() {
val acc = Account(100)
acc.spend(30)
println(acc.balance)
}I costruttori preparano il terreno
I costruttori e i blocchi init assicurano che ogni oggetto inizi in uno stato valido.
- Costruttore primario: dichiara e riceve i valori.
init: esegue configurazione e convalida.
Questo impedisce la presenza di oggetti creati solo parzialmente nell'app.
Verifica rapida
Verifichi la sua comprensione dei costruttori e di init.
Riepilogo
Ha imparato a usare il costruttore primario, a dichiarare le proprietà con val/var al suo interno e ad assegnare loro valori predefiniti.
Il blocco init gestisce configurazione e convalida ed esegue le istruzioni dall'alto verso il basso insieme agli inizializzatori delle proprietà. Ora conoscerà le data class, che generano automaticamente questo codice ripetitivo.
Domande Frequenti
La lezione «Costruttori e init» è gratuita?
Sì — il testo completo di «Costruttori e init» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.
Cosa imparerò in «Costruttori e init»?
Crei e inizializzi oggetti. Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Android Academy?
Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Costruttori e init»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Android Academy?
Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Dichiarare funzioni
- Classi e proprietà
- Costruttori e init
- Classi di dati