0Pricing
Kotlin Academy · Lekcja

Konstruktor główny i parametry właściwości

Deklaruj klasy z konstruktorami głównymi i właściwościami deklarowanymi bezpośrednio w konstruktorze.

Konstruktor główny i parametry właściwości to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 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 Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Konstruktor podstawowy

Klasa Kotlina deklaruje konstruktor podstawowy w nawiasach, bezpośrednio za nazwą klasy. Nie ma on treści metody — zawiera jedynie listę parametrów.

Najprostsza klasa

Konstruktor podstawowy bez modyfikatorów jest pomijany po nazwie klasy.

class Greeter(val name: String) {
    fun greet() = "Hello, $name!"
}
fun main() {
    println(Greeter("Ada").greet())
}

Parametry będące właściwościami

Dodaj val lub var przed parametrem konstruktora, aby w jednym kroku przekształcić go we właściwość klasy.

class Person(val name: String, var age: Int)
fun main() {
    val p = Person("Bob", 30)
    println("${p.name} is ${p.age}")
    p.age = 31
    println("Now ${p.age}")
}

Parametry bez val/var

Parametry konstruktora bez val/var są lokalne dla konstruktora — można ich używać w blokach init lub inicjalizatorach właściwości, ale nie można uzyskać do nich dostępu później.

class Logger(prefix: String) {
    val msg = "$prefix: ready"
}
fun main() {
    val l = Logger("[INFO]")
    println(l.msg)
    // l.prefix // ERROR — not a property
}

Domyślne wartości parametrów

Podaj wartości domyślne parametrów konstruktora, aby uniknąć powielania kodu związanego z przeciążeniami.

class User(
    val name: String,
    val age: Int = 0,
    val email: String = ""
)
fun main() {
    println(User("Ana").age)               // 0
    println(User("Ben", 25).email)         // ""
    println(User("Cal", 30, "c@x.io").email)
}

Argumenty nazwane

Pomiń kolejność pozycyjną i nazwij parametry w miejscu wywołania — jest to szczególnie przydatne w połączeniu z wartościami domyślnymi.

class HttpClient(
    val baseUrl: String,
    val timeoutMs: Int = 5000,
    val retries: Int = 3
)
fun main() {
    val c = HttpClient(
        baseUrl = "https://api.example.com",
        retries = 5
    )
    println("retries=${c.retries} timeout=${c.timeoutMs}")
}

Widoczność konstruktora

Użyj private constructor, aby uniemożliwić tworzenie obiektów z zewnątrz — jest to częste rozwiązanie stosowane wraz z metodami fabrykującymi.

class Singleton private constructor() {
    companion object {
        val instance = Singleton()
    }
}
fun main() {
    val s = Singleton.instance
    println(s)
}

Konstruktory dodatkowe

Dodaj dodatkowe konstruktory za pomocą słowa kluczowego constructor. Muszą one delegować do konstruktora podstawowego za pomocą this(...).

class Point(val x: Int, val y: Int) {
    constructor(value: Int) : this(value, value)
}
fun main() {
    println("${Point(3).x}, ${Point(3).y}") // 3, 3
}

Konstruktor z określoną widocznością

Można ustawić różne poziomy widoczności dla poszczególnych konstruktorów — jest to przydatne w bibliotekach.

class Lib internal constructor(val key: String) {
    companion object {
        fun create(key: String) = Lib(key)
    }
}
fun main() {
    println(Lib.create("abc").key)
}

Podsumowanie bloku init

Kod, który powinien zostać wykonany podczas tworzenia obiektu, należy umieścić w bloku init { }. Wiele bloków init jest wykonywanych w kolejności występowania w kodzie źródłowym.

class Validator(val value: String) {
    init { require(value.isNotBlank()) { "value cannot be blank" } }
}
fun main() {
    println(Validator("ok").value)
    // Validator("") // throws IllegalArgumentException
}

Łączenie właściwości i logiki

Deklaracje właściwości, konstruktory dodatkowe i bloki init tworzą elastyczny potok inicjalizacji.

class Account(
    val owner: String,
    initialBalance: Double = 0.0
) {
    var balance: Double = initialBalance
        private set
    init {
        require(initialBalance >= 0) { "balance must be non-negative" }
    }
    fun deposit(amount: Double) { balance += amount }
}
fun main() {
    val a = Account("Alice", 100.0)
    a.deposit(50.0)
    println("${a.owner}: ${a.balance}") // Alice: 150.0
}

Szybkie sprawdzenie

Co robi słowo kluczowe val, gdy zostanie użyte w parametrze konstruktora podstawowego?

Podsumowanie

Konstruktor podstawowy znajduje się w nagłówku klasy. Używaj val/var dla parametrów będących właściwościami; zwykłe parametry są lokalne dla konstruktora. Dodawaj wartości domyślne, aby ograniczyć liczbę przeciążeń, a logikę konfiguracji umieszczaj w blokach init. Konstruktory dodatkowe delegują wywołanie za pomocą this(...).

Często zadawane pytania

Czy lekcja „Konstruktor główny i parametry właściwości” jest bezpłatna?

Tak — pełny tekst „Konstruktor główny i parametry właściwości” 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 Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Konstruktor główny i parametry właściwości”?

Deklaruj klasy z konstruktorami głównymi i właściwościami deklarowanymi bezpośrednio w konstruktorze. Ćwiczysz Kotlin 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ąć Kotlin Academy?

Nie wymagamy żadnego doświadczenia. Kotlin 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 1 z 4.

Ile czasu zajmuje lekcja „Konstruktor główny i parametry właściwości”?

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 Kotlin Academy?

Tak. Każda lekcja Kotlin 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

  1. Konstruktor główny i parametry właściwości
  2. Bloki init i kolejność inicjalizacji
  3. Własne gettery i settery z field
  4. lateinit i leniwa inicjalizacja
← Powrót do Kotlin Academy