Sobes.tech
Junior — Middle

Kotlinban lehet-e megváltoztatni egy örökölt osztály metódusának megvalósítását anélkül, hogy módosítanánk az alap osztályban ennek a metódusnak a forráskódját?

sobes.tech MI

Válasz az MI-től

Igen, Kotlinben lehetőség van egy metódus implementációjának módosítására egy öröklődő osztályban anélkül, hogy megváltoztatnánk az alap osztály forráskódját, az override mechanizmus használatával. Ehhez a metódusnak az alap osztályban open módosítóval kell lennie.

Példa:

open class Base {
    open fun greet() {
        println("Helló a Base-ből")
    }
}

class Derived : Base() {
    override fun greet() {
        println("Helló a Derived-ből")
    }
}

fun main() {
    val obj: Base = Derived()
    obj.greet() // Kiírja: Helló a Derived-ből
}

Így az alap osztály módosítása nélkül is megváltoztatható a metódus viselkedése az öröklődő osztályban.