Sobes.tech
Junior

Реците ми о наслеђивању у Kotlin-у.

sobes.tech АИ

Одговор од АИ

Nasleđivanje u Kotlinu je mehanizam koji omogućava kreiranje novih klasa na osnovu postojećih. Nova klasa (potomak ili izvedena) nasleđuje svojstva (promenljive) i metode (funkcije) roditeljske (baze) klase. Ovo podstiče ponovnu upotrebu koda i kreiranje hijerarhija klasa.

Ključne osobine:

  1. Podrazumevano nije otvoreno: U Kotlinu, klase i metode su final po defaultu, što znači da ih ne može naslediti ili prepisati. Da bi se dozvolilo nasleđivanje, moraju biti eksplicitno označene ključnom reči open.
  2. Konstruktori: Potomak mora pozvati konstruktor jedne od baznih klasa (ako ih ima više, u slučaju interfejsa). Poziv se vrši pri deklaraciji potomka pomoću (...).
  3. Prepisivanje metoda i svojstava: Da bi prepisali metodu ili svojstvo bazne klase u izvedenoj, one moraju biti označene sa open u baznoj klasi i override u izvedenoj.
  4. super: Ključna reč super se koristi za pristup članovima bazne klase iz izvedene.
  5. Jednostar nasleđivanje implementacije: Kotlin podržava jednostrano nasleđivanje implementacije (od jedne klase), ali podržava višestruko nasleđivanje interfejsa.

Primer bazne klase:

// Bazna klasa
open class Animal(val name: String) {
    open fun makeSound() {
        println("$name pravi zvuk")
    }
}

Primer izvedene klase:

// Izvedena klasa
class Dog(name: String) : Animal(name) {
    override fun makeSound() {
        println("$name laje")
    }
}

Upotreba:

// Upotreba objekata
fun main() {
    val animal = Animal("Opšta životinja")
    animal.makeSound() // Izlaz: Opšta životinja pravi zvuk

    val dog = Dog("Bobby")
    dog.makeSound() // Izlaz: Bobby laje
}