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:
- Podrazumevano nije otvoreno: U Kotlinu, klase i metode su
finalpo 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čiopen. - 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
(...). - Prepisivanje metoda i svojstava: Da bi prepisali metodu ili svojstvo bazne klase u izvedenoj, one moraju biti označene sa
openu baznoj klasi ioverrideu izvedenoj. super: Ključna rečsuperse koristi za pristup članovima bazne klase iz izvedene.- 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
}