Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 这是在Kotlin中继承超类的正确语法吗?_Class_Kotlin_Inheritance - Fatal编程技术网

Class 这是在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

这是在Kotlin中继承超类的正确语法吗?我所研究的那个子类一定包含了它们的超类的参数。但在这里你们可以看到,面条和蔬菜类并没有参数。为什么?

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)
但是,像您这样直接硬编码它们并没有什么错——有时这是一个好方法。  只要
项目
名称
价格
以某种方式设置好,它就应该都能工作


和往常一样,这是主要的参考;它讨论了所有这些。

明白了!!谢谢你的解释。