Konstruktory i init
Utworzy Pan/Pani i zainicjalizuje obiekty.
Konstruktory i init to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.
Czym jest konstruktor?
Konstruktor to specjalny kod uruchamiany podczas tworzenia obiektu. Ustawia początkowe wartości obiektu.
W Kotlinie główny konstruktor zapisuje się bezpośrednio obok nazwy klasy.
Konstruktor główny
Konstruktor główny umieszcza się w nawiasach po nazwie klasy. Wartości przekazuje się podczas tworzenia obiektu.
W tym przykładzie Dog wymaga podania nazwy podczas tworzenia.
class Dog(name: String) {
val dogName = name
}
fun main() {
val d = Dog("Rex")
println(d.dogName)
}Właściwości w konstruktorze
Dodanie val lub var przed parametrem konstruktora automatycznie przekształca go we właściwość.
To najczęściej stosowany i zwięzły styl w Kotlinie.
class Dog(val name: String, var age: Int)
fun main() {
val d = Dog("Rex", 3)
println(d.name + " is " + d.age)
}Domyślne wartości konstruktora
Parametry konstruktora również mogą mieć wartości domyślne. W takim przypadku można je pominąć podczas wywołania.
W tym przykładzie age domyślnie przyjmuje wartość 0, jeśli nie zostanie podana.
class Dog(val name: String, var age: Int = 0)
fun main() {
val d = Dog("Max")
println(d.age)
}Blok init
Blok init jest uruchamiany jako część konstruktora głównego. Należy go używać do logiki konfiguracji, której nie można umieścić w jednym wierszu deklaracji właściwości.
Może on odczytywać parametry konstruktora.
class Dog(val name: String) {
init {
println("Created dog: " + name)
}
}
fun main() {
Dog("Rex")
}Walidacja w init
Typowym zastosowaniem init jest sprawdzanie danych wejściowych. W tym przykładzie za pomocą require odrzucamy ujemny wiek.
Jeśli sprawdzenie się nie powiedzie, obiekt nie zostanie utworzony.
class Person(val age: Int) {
init {
require(age >= 0) { "Age cannot be negative" }
}
}
fun main() {
val p = Person(25)
println(p.age)
}Kolejność wykonywania
Inicjalizatory właściwości i bloki init są wykonywane od góry do dołu, w kolejności, w jakiej występują w klasie.
Ma to znaczenie, gdy jeden wiersz zależy od wartości ustawionej powyżej.
class Demo {
val a = 1
init { println("a is " + a) }
val b = a + 1
init { println("b is " + b) }
}
fun main() {
Demo()
}Właściwości obliczane
Wewnątrz treści klasy można obliczać właściwość na podstawie wartości konstruktora.
W tym przykładzie area jest wyliczana na podstawie width i height.
class Rect(val width: Int, val height: Int) {
val area = width * height
}
fun main() {
println(Rect(3, 4).area)
}Konstruktory dodatkowe
Klasa może mieć również konstruktory dodatkowe z użyciem słowa kluczowego constructor. Muszą one delegować do konstruktora głównego za pomocą this(...).
Są stosowane rzadziej, ponieważ zwykle wystarczają wartości domyślne.
class Dog(val name: String) {
constructor() : this("Unknown")
}
fun main() {
println(Dog().name)
}Używanie nowego obiektu
Po wykonaniu konstruktora i bloków init obiekt jest gotowy do użycia. Można od razu odczytywać jego właściwości i wywoływać jego metody.
W tym przykładzie konstruktor inicjalizuje saldo, a metoda pomniejsza je o wydatek.
class Account(var balance: Int) {
fun spend(amount: Int) {
balance = balance - amount
}
}
fun main() {
val acc = Account(100)
acc.spend(30)
println(acc.balance)
}Konstruktory przygotowują obiekt
Konstruktory i bloki init zapewniają, że każdy obiekt rozpoczyna działanie w prawidłowym stanie.
- Konstruktor główny: deklaruje i przyjmuje wartości.
init: wykonuje konfigurację i walidację.
Zapobiega to powstawaniu niekompletnie utworzonych obiektów w aplikacji.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat konstruktorów i init.
Podsumowanie
Dowiedział się Pan/Dowiedziała się Pani, czym jest konstruktor główny, jak deklarować w nim właściwości za pomocą val/var oraz jak nadawać im wartości domyślne.
Blok init obsługuje konfigurację i walidację oraz jest wykonywany od góry do dołu razem z inicjalizatorami właściwości. Następnie pozna Pan/Pani klasy danych, które automatycznie generują ten kod pomocniczy.
Często zadawane pytania
Czy lekcja „Konstruktory i init” jest bezpłatna?
Tak — pełny tekst „Konstruktory i init” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Konstruktory i init”?
Utworzy Pan/Pani i zainicjalizuje obiekty. Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Android Academy?
Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Konstruktory i init”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?
Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Deklarowanie funkcji
- Klasy i właściwości
- Konstruktory i init
- Klasy danych