Menu
Coddy logo textTech

Definiowanie klas

Część sekcji Programowanie obiektowe ścieżki Kotlin w Coddy. Lekcja 2 z 57.

Klasa opisuje rodzaj obiektu: dane, które przechowuje, i to, co potrafi robić. class Dog { ... } deklaruje typ, a Dog() tworzy obiekt tego typu, czyli instancję. Kotlin nie ma słowa kluczowego new:

class Dog {
    var name = "Rex"
    var age = 3
}

Wewnątrz main:

val dog = Dog()
println(dog.name)
println(dog.age)

Wynik:

Rex
3

Zmienne wewnątrz klasy to jej właściwości. Każda instancja ma własną kopię, którą można odczytywać i zmieniać za pomocą kropki:

class Dog {
    var name = "Rex"
}

Wewnątrz main:

val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)

Wynik:

Rex
Bella

Funkcja wewnątrz klasy to metoda (w Kotlinie nazywa się je funkcjami składowymi). Metoda może odczytywać i zmieniać właściwości instancji, na której jest wywoływana:

class Counter {
    var count = 0

    fun increment() {
        count++
    }

    fun report() = "count is $count"
}

Wewnątrz main:

val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())

Wynik:

count is 2

Nazwy klas zapisuje się w notacji UpperCamelCase (BankAccount); właściwości i metody zapisuje się w notacji lowerCamelCase (balance, deposit()). Grupowanie danych wraz z funkcjami, które na nich operują, to podstawowa idea programowania obiektowego: kod korzystający z Counter wywołuje increment() i nigdy nie musi wiedzieć, jak przechowywana jest liczba.

class BankAccount {
    var balance = 0

    fun deposit(amount: Int) {
        balance += amount
    }
}
challenge icon

Wyzwanie

Łatwy

Uzupełnij metodę describe() klasy Pet. Zwraca ona jedno zdanie zbudowane na podstawie właściwości: zwierzę o imieniu Rex, gatunku dog i wieku 3 daje Rex is a 3 year old dog.

Podany kod tworzy obiekt Pet, ustawia jego właściwości na podstawie danych wejściowych (imię, gatunek, wiek) i wypisuje wynik describe().

Twój kod umieść w pliku Pet.kt. Plik Main.kt zawiera podany kod wejścia/wyjścia i nie można go edytować.

Spróbuj swoich sił

fun main() {
    // Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
    val input = generateSequence(::readLine).toList()
    val pet = Pet()
    pet.name = input[0]
    pet.species = input[1]
    pet.age = input[2].toInt()
    println(pet.describe())
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Edytor online Kotlin