Sobes.tech
Junior

Povězte mi o dědičnosti v Kotlinu.

sobes.tech AI

Odpověď od AI

Dědičnost v Kotlinu je mechanismus, který umožňuje vytvářet nové třídy na základě stávajících. Nová třída (potom nebo odvozená) dědí vlastnosti (proměnné) a metody (funkce) rodičovské (základní) třídy. To podporuje opakované použití kódu a vytváření hierarchií tříd.

Klíčové vlastnosti:

  1. Ve výchozím nastavení není otevřená: V Kotlinu jsou třídy a metody ve výchozím nastavení final, což znamená, že je nelze dědit nebo přepisovat. Aby bylo možné dědění, musí být explicitně označeny klíčovým slovem open.
  2. Konstruktory: Potomková třída musí volat konstruktor jedné z bazových tříd (pokud jich je více, v případě rozhraní). Volání se provádí při deklaraci potomkovské třídy pomocí (...).
  3. Přepisování metod a vlastností: Aby bylo možné přepsat metodu nebo vlastnost bazové třídy v potomkovské třídě, musí být v bazové třídě označeny open a v potomkové override.
  4. super: Klíčové slovo super se používá k přístupu k členům bazové třídy z potomkové.
  5. Jednoduché dědění implementace: Kotlin podporuje jednoduché dědění implementace (z jedné třídy), ale podporuje i vícenásobné dědění rozhraní.

Příklad bazové třídy:

// Bazová třída
open class Animal(val name: String) {
    open fun makeSound() {
        println("$name vydává zvuk")
    }
}

Příklad potomkové třídy:

// Potomková třída
class Dog(name: String) : Animal(name) {
    override fun makeSound() {
        println("$name štěká")
    }
}

Použití:

// Použití objektů
fun main() {
    val animal = Animal("Obecné zvíře")
    animal.makeSound() // Výstup: Obecné zvíře vydává zvuk

    val dog = Dog("Bobby")
    dog.makeSound() // Výstup: Bobby štěká
}