java题不会做啊啊

img


为什么它没调用方法也可以输出 为什么输出的是这样的结果啊,而且同时还输出了父类的方法

你这不是调了构造方法嘛,子类的构造方法加载的时候如果有父类,先加载父类再加载子类

下面是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

构造方法是创建对象的时候就调用的,而你的构造方法里面有输出函数,所以才会输出!
感谢采纳!