【发布时间】:2020-04-09 12:13:19
【问题描述】:
我正在尝试将值传递给构造函数并打印值。
open class Car(c: Int){
open var cost: Int = c
init {
println("This comes First $cost")
}
}
open class Vehicle(cc: Int) : Car(cc) {
override var cost: Int = 20000
init {
println("This comes Second $cost")
}
fun show(){
println("cost = $cost")
}
}
fun main() {
var vehicle = Vehicle(1000)
vehicle.show()
}
输出
This comes First 0
This comes Second 20000
cost = 20000
如果我只是评论这一行
override var cost: Int = 20000
输出是
This comes First 1000
This comes Second 1000
cost = 1000
- 为什么重写子类中的属性时超级构造函数成本为零?
- 我需要将其与 java 概念进行比较,以便在此处进行更好的解释
【问题讨论】:
-
@Tenfour04 很有趣,但你能详细说明你的答案吗?我没有为此找到任何资源。所以,请给出更多详细解释的答案,当然用简单的话。
-
我修复了代码格式。在声明变量的类型时我们不需要加空格,应该是
cost: Int而不是cost : Int。
标签: java kotlin inheritance constructor overriding