Kako se ostvaruje nasledjivanje u jeziku Kotlin?
sobes.tech АИ
Одговор од АИ
Nasleđivanje u Kotlinu zasniva se na ključnim rečima open i override. Klase i metode su podrazumevano final, što znači da se ne mogu naslediti ili prepisati. Da bi se dozvolilo nasleđivanje, klasa ili metoda mora biti označena modifikatorom open.
Za kreiranje izvedene klase, koristi se dvotačka : nakon imena osnovne klase, nakon čega sledi ime osnovne klase sa njenim konstruktorom.
open class Base(val name: String) {
open fun greet() {
println("Zdravo, $name")
}
}
Za prepisivanje metode osnovne klase u izvedenoj klasi, koristi se modifikator override.
class Derived(name: String) : Base(name) {
override fun greet() {
println("Pozdrav, $name")
}
}
Ako osnovna klasa ima konstruktor sa parametrima, izvedena klasa ga mora pozvati pomoću ključne reči super.
Kotlin podržava višestruko nasleđivanje interfejsa, ali ne i klasa. Klasa može naslediti samo od jedne druge klase.
Klasa takođe može označiti svoje članove kao protected, internal ili private, ograničavajući njihovu vidljivost za izvedene klase ili unutar modula.
Apstraktne klase se deklarisu pomoću ključne reči abstract. One mogu sadržavati i apstraktne (bez implementacije) i obične metode. Apstraktne metode ne zahtevaju open, jer se podrazumeva da će biti prepisane. Apstraktne klase ne mogu biti direktno instancirane.
abstract class Shape {
abstract fun draw()
open fun printInfo() {
println("Ovo je oblik.")
}
}
Na ovaj način, nasleđivanje u Kotlinu je eksplicitno kontrolisano pomoću modifikatora open i override, što poboljšava čitljivost i sprečava neželjeno nasleđivanje.