作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是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 - 尽管显式编写了另一个构造函数,但是是否创建了空构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64308287/
我是一名优秀的程序员,十分优秀!