Jak se dědí v jazyce Kotlin?
sobes.tech AI
Odpověď od AI
Dědičnost v Kotlinu je založena na klíčových slovech open a override. Třídy a metody jsou ve výchozím nastavení final, což znamená, že nelze je dědit nebo přepisovat. Aby bylo možné dědit, musí být třída nebo metoda označena modifikátorem open.
Pro vytvoření odvozené třídy se používají dvě tečky : za názvem základní třídy, za kterou následuje název základní třídy s jejím konstruktorem.
open class Base(val name: String) {
open fun greet() {
println("Ahoj, $name")
}
}
Pro přepsání metody základní třídy v odvozené třídě se používá modifikátor override.
class Derived(name: String) : Base(name) {
override fun greet() {
println("Zdravím, $name")
}
}
Pokud má základní třída konstruktor s parametry, odvozená třída ho musí volat pomocí klíčového slova super.
Kotlin podporuje vícenásobnou dědičnost rozhraní, nikoli tříd. Třída může dědit pouze od jedné třídy.
Třída může také označit své členy jako protected, internal nebo private, čímž omezuje jejich viditelnost pro odvozené třídy nebo v rámci modulu.
Abstraktní třídy jsou deklarovány pomocí klíčového slova abstract. Mohou obsahovat jak abstraktní (bez implementace), tak běžné metody. Abstraktní metody nepotřebují klíčové slovo open, protože se předpokládá jejich přepsání. Abstraktní třídy nelze přímo instancovat.
abstract class Shape {
abstract fun draw()
open fun printInfo() {
println("Toto je tvar.")
}
}
Tímto způsobem je dědičnost v Kotlinu explicitně řízena pomocí modifikátorů open a override, což zvyšuje čitelnost a zabraňuje nechtěnému dědění.