Kotlin обеспечивает поддержку переопределения свойств.Мне интересно, как лучше переопределить свойство как постоянное значение.
Чтобы быть более конкретным, предположим, что абстрактное свойство val
объявлено в суперклассе или интерфейсе:
// In a superclass or an interface
abstract val num : Int
В его подклассе есть, по крайней мере, два способа переопределить его:
// In its subclass
override val num : Int = 0
или
// In its subclass
override val num : Int get() = 0
Помимо двух, я также могусделать это в Java:
// In a superclass or an interface
abstract fun getNum() : Int
// In its subclass
override fun getNum() : Int = 0
В чем разница между тремя с точки зрения памяти и сгенерированного байт-кода?Какой из них лучше?
Есть ли еще лучшие способы или шаблоны в Kotlin для объявления свойств, которые должны быть переопределены как константы?