Kotlin类继承构造函数调用顺序

父类: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----

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值