gpt4 book ai didi

java - 尽管显式编写了另一个构造函数,但是是否创建了空构造函数?

转载 作者:行者123 更新时间:2023-12-02 12:37:13 25 4
gpt4 key购买 nike

我是Kotlin的新手(有Java经验)。
在Java中,如果我们至少编写一个构造函数,则编译不会构建任何空的构造函数。仅当我们没有编写构造函数时,才会构建空构造函数。
我知道在Kotlin中,编译器的工作方式与Java中相同。
我在Kotlin中编写了一个带有一个构造函数的父类(super class)(名称为Animal)。
此外,我为Animal编写了一个子类,该子类调用了Animal的空构造函数。我不明白,为什么Animal类没有要调用的空构造函数,为什么编译器没有通知我这是一个编译错误。
我的代码:

    open class Animal (val str:String = "sav")
{
open var fff:String = ""
open var image = ""
open val food =""
open val habitat =""
var hunger = 10

open fun makeNoise()
{
println("The animal is making noise")
}
}

class Hippo ( var strrr:Int = 7) : Animal()
{
override var image = "hippo.jpg"
override var food = "grass"
override val habitat = "water"



override fun makeNoise()
{
println("Grunt! Grunt!")
}
}

class Hippo ( var strrr:Int = 7) : Animal()> isn't a problem?

最佳答案

documentation所述:

On the JVM, if all of the parameters of the primary constructor have default values, the compiler will generate an additional parameterless constructor which will use the default values.


顺便说一下,该构造函数也将从Java可见。

关于java - 尽管显式编写了另一个构造函数,但是是否创建了空构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64308287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com