父类:Person
子类:Student,包含多种构造函数
fun main() {
println("val stu1 = Student()")
val stu1 = Student()
println("----stu1----")
println("val stu2 = Student(\"jack\", 19)")
val stu2 = Student("jack", 19)
println("----stu2----")
println("val stu3 = Student(\"a123\", 5, \"Tom\", 19)")
val stu3 = Student("a123", 5, "Tom", 19)
println("----stu3----")
println("val stu4 = Student(10, 20)")
val stu4 = Student(10, 20)
println("----stu4----")
println("val stu5 = Student(\"jack\", \"a222\")")
val stu5 = Student("jack", "a222")
println("----stu5----")
}
Person类:父类
open class Person(val name: String, val age: Int) {
init {
println("Person init")
}
fun eat() {
println("$name is eating. He is $age years old")
}
}
Student类:子类
class Student(val sno: String, val grade: Int, name: String, age: Int) :Person(name, age) {
// Student 构造函数1
constructor(name: String, age: Int):this("", 0, name, age){ // 调用Student 构造函数0
println("constructor(name: String, age: Int):this(\"\", 0, name, age)")
}
// Student 构造函数2
constructor(sno: String, name: String):this(sno, 0, name, 0){ // 调用Student 构造函数0
println("constructor(sno: String, name: String):this(sno, 0, name, 0)")
}
// Student 构造函数3
constructor(grade: Int, age: Int) : this("", grade, "", age){// 调用Student 构造函数0
println("constructor(grade: Int, age: Int) : this(\"\", grade, \"\", age)")
}
// Student 构造函数4
constructor():this("", 0){// 调用Student 构造函数1
println("constructor():this(\"\", 0)")
}
init {
println("Student init")
}
}
val stu1 = Student()
Person init
Student init
constructor(name: String, age: Int):this(“”, 0, name, age)
constructor():this(“”, 0)
----stu1----
val stu2 = Student(“jack”, 19)
Person init
Student init
constructor(name: String, age: Int):this(“”, 0, name, age)
----stu2----
val stu3 = Student(“a123”, 5, “Tom”, 19)
Person init
Student init
----stu3----
val stu4 = Student(10, 20)
Person init
Student init
constructor(grade: Int, age: Int) : this(“”, grade, “”, age)
----stu4----
val stu5 = Student(“jack”, “a222”)
Person init
Student init
constructor(sno: String, name: String):this(sno, 0, name, 0)
----stu5----