这是 Kotlin 中的继承示例。
open class Person() {
var _name : String = ""
var _age : Int = 0
constructor(name: String, age : Int) : this(){
_name = name
_age = age
}
}
class Student() : Person() {
var _university : String = ""
constructor (name : String, age: Int, university: String) : super(name, age){
_university = university
}
}
fun main() {
var person = Person("a", 10)
var student = Student("b", 18, "MIT")
println("${person._name} : ${person._age}")
println("${student._university}")
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何解决错误“预期主构造函数调用”?
如果类具有主构造函数,则必须将辅助构造函数委托给主构造函数。Student没有这样做的班级就是这种情况。
首先,您应该Person按照 Kotlin 的习惯用法删除类的样板(使用可选参数而不是构造函数重载)。
// This one's completely optional to do, skip if you don't want to follow idioms
open class Person(
var name : String = ""
var age : Int = 0
)
Run Code Online (Sandbox Code Playgroud)
然后 Student 类应该有两个单独的构造函数,因为如果您采用主构造函数,则其他构造函数必须委托给它:
class Student: Person {
var university: String = ""
constructor() : super()
constructor (name: String, age: Int, university: String) : super(name, age) {
this.university = university
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3845 次 |
| 最近记录: |