Class 这是在Kotlin中继承超类的正确语法吗?
这是在Kotlin中继承超类的正确语法吗?我所研究的那个子类一定包含了它们的超类的参数。但在这里你们可以看到,面条和蔬菜类并没有参数。为什么?Class 这是在Kotlin中继承超类的正确语法吗?,class,kotlin,inheritance,Class,Kotlin,Inheritance,这是在Kotlin中继承超类的正确语法吗?我所研究的那个子类一定包含了它们的超类的参数。但在这里你们可以看到,面条和蔬菜类并没有参数。为什么? open class Item(val name: String, val price: Int) class Noodles : Item("Noodles", 10) class Vegetables : Item("Vegetables", 5) fun main() { val noodle
open class Item(val name: String, val price: Int)
class Noodles : Item("Noodles", 10)
class Vegetables : Item("Vegetables", 5)
fun main() {
val noodles = Noodles()
val vegetables = Vegetables()
println(noodles)
println(vegetables)
}
是的,这是正确的语法。 您正在提供必要的参数 您的
Item
类有一个主构造函数,它接受两个参数:name
和price
。 而且,正如您所了解的,因为这是唯一的构造函数,这意味着无论何时构造项
或任何子类的实例,都必须为这两个参数提供值
但是您直接在调用超类构造函数的位置提供这些值-“面条”
和10
,以及“蔬菜”
和5
在实践中,子类更常见的情况是要求以相同的方式将它们提供给它,然后传递给超类,例如:
class Noodles(val name: String, val price: Int) : Item(name, price)
但是,像您这样直接硬编码它们并没有什么错——有时这是一个好方法。 只要项目
的名称
和价格
以某种方式设置好,它就应该都能工作
和往常一样,这是主要的参考;它讨论了所有这些。明白了!!谢谢你的解释。