tgoop.com/mobileproglib/5644
Create:
Last Update:
Last Update:
👾 Что нужно сделать, чтобы класс можно было наследовать
По умолчанию, классы в Kotlin объявляются как final
, то есть их нельзя наследовать. Если мы всё же попытаемся наследоваться от такого класса, то получим ошибку: «This type is final, so it cannot be inherited from».
Чтобы класс можно было наследовать, его нужно объявить с модификатором open
.
open class Fraction {...}
Не только классы, но и функции в Kotlin по умолчанию имеют статус
final
. Поэтому те функции, которые находятся в родительском классе и которые вы хотите переопределить в дочерних классах, также должны быть отмечены open
.open class Fraction {open fun toAttack() {...}}
Свойства класса также по умолчанию являются
final
. Для возможности переопределения таких свойств в дочерних классах, не забудьте и их отметить ключевым словом open
.open class Fraction {open val name: String = «default»open fun toAttack() {...}}
При этом, если в открытом классе будут присутствовать функции и свойства, которые не отмечены словом
open
, то переопределяться они не будут. Но дочерний класс сможет к ним обращаться.open class Fraction {open val name: String = «default»fun toAttack() {...}}class Horde : Fraction() {override val name = «Horde»}class SomeClass() {val horde = Horde()horde.toAttack()}
Библиотека мобильного разработчика #буст
BY Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
Share with your friend now:
tgoop.com/mobileproglib/5644