Sobes.tech
Junior

Opowiedz o dziedziczeniu w Kotlin.

sobes.tech AI

Odpowiedź od AI

Dziedziczenie w Kotlinie to mechanizm umożliwiający tworzenie nowych klas na podstawie istniejących. Nowa klasa (potomna lub pochodna) dziedziczy właściwości (zmienne) i metody (funkcje) klasy rodzica (bazowej). To sprzyja ponownemu użyciu kodu i tworzeniu hierarchii klas.

Kluczowe cechy:

  1. Domyślnie nie jest otwarte: W Kotlinie klasy i metody są domyślnie final, co oznacza, że nie można ich dziedziczyć ani nadpisywać. Aby umożliwić dziedziczenie, muszą być wyraźnie oznaczone słowem kluczowym open.
  2. Konstruktory: Klasa potomna musi wywołać konstruktor jednej z klas bazowych (jeśli jest ich więcej, w przypadku interfejsów). Wywołanie następuje podczas deklaracji klasy potomnej za pomocą (...).
  3. Nadpisywanie metod i właściwości: Aby nadpisać metodę lub właściwość klasy bazowej w klasie potomnej, muszą być one oznaczone open w klasie bazowej i override w klasie potomnej.
  4. super: Słowo kluczowe super służy do dostępu do członków klasy bazowej z klasy potomnej.
  5. Pojedyncze dziedziczenie implementacji: Kotlin obsługuje pojedyncze dziedziczenie implementacji (z jednej klasy), ale obsługuje wielokrotne dziedziczenie interfejsów.

Przykład klasy bazowej:

// Klasa bazowa
open class Animal(val name: String) {
    open fun makeSound() {
        println("$name wydaje dźwięk")
    }
}

Przykład klasy potomnej:

// Klasa potomna
class Dog(name: String) : Animal(name) {
    override fun makeSound() {
        println("$name szczeka")
    }
}

Użycie:

// Użycie obiektów
fun main() {
    val animal = Animal("Ogólne zwierzę")
    animal.makeSound() // Wyjście: Ogólne zwierzę wydaje dźwięk

    val dog = Dog("Burek")
    dog.makeSound() // Wyjście: Burek szczeka
}