你这不是调了构造方法嘛,子类的构造方法加载的时候如果有父类,先加载父类再加载子类
下面是java 转kotlin写的代码,输出结果和你的不一致。题主第一个输出父类无参构造是有问题的吧。
第一步输出父类有参构造 SubClass(10)
第二步,初始化子类构建会有先初始化父类无参构造 SubClass()
第三步 初始化子类无参构造
object CsdnT1 {
var n = 10
@JvmStatic
fun main(args: Array<String>) {
val sc1 = SubClass(n)
val sc2 = SSubClass()
}
}
internal open class SubClass {
var n = 0
constructor() {
println(" SubClass()")
}
constructor(n: Int) {
this.n = n
println("SubClass($n)")
}
}
internal class SSubClass : SubClass {
constructor() {
println(" 子subClass()")
}
constructor(n: Int) {
this.n = n
println("子subClass($n)")
}
}
输出:
SubClass(10)
SubClass()
子subClass()
Process finished with exit code 0
构造方法是创建对象的时候就调用的,而你的构造方法里面有输出函数,所以才会输出!
感谢采纳!