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

Eitanos30

我是Kotlin的新手(有Java经验)。在Java中,如果我们编写至少一个构造函数,那么编译将不会构建任何空的构造函数。仅当我们没有编写构造函数时,才会构建空构造函数。我知道在Kotlin中,编译器的工作方式与Java中相同。我在Kotlin中编写了一个带有一个构造函数的超类(名称为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!")
    }
}

河马班(var strrr:Int = 7):Animal()>不是问题吗?

米哈伊尔·纳夫塔尔(Mikhail Naftal)

文档所述:

在JVM上,如果主构造函数的所有参数都具有默认值,则编译器将生成一个将使用默认值的附加无参数构造函数。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

隐式超级构造函数Person()未定义。必须显式调用另一个构造函数吗?

Java。隐式超级构造函数Employee()未定义。必须显式调用另一个构造函数

如何解决“隐式超级构造函数classA()不可见。必须显式调用另一个构造函数吗?

从另一个构造函数调用构造函数

Axon使用无参数构造函数隐式实例化另一个聚合

是否可以将构造函数放在另一个构造函数的内部?

如何从另一个调用空的构造函数?

C ++:从另一个构造函数隐式调用构造函数

如何使用另一个类的对象编写Class的复制构造函数

C ++-从另一个类构造函数调用一个类构造函数

用另一个类的变量在构造函数中创建一个arraylist?

为什么在没有显式默认构造函数的情况下不能将包含另一个结构作为成员包装的结构的编译?

c#是否可以在创建静态对象的同时将其传递给另一个对象的构造函数或方法

在另一个类的构造函数中创建n个对象的最佳方法?

如何为包含另一个类的类编写构造函数?

在构造函数中从另一个成员构造一个类成员

如何将编写的对象传递给另一个类的构造函数?

另一个内的Java调用构造函数

为什么我需要在这里显式编写一个构造函数?

从同一类中的另一个构造函数访问构造函数变量

另一个项目的构造函数

是否可以在另一个类中调用一个类的构造函数?

Java错误:隐式超级构造函数未定义。必须显式调用另一个构造函数

具有所有默认参数的显式构造函数不能从同一类的另一个构造函数调用

是否可以将构造函数用作TypeScript中另一个函数的参数类型?

即使重写了构造函数,覆盖另一个方法的方法仍将引发NullPointerException

java:使用另一个类的构造函数

在另一个对象的构造函数中创建新的 ES6 对象失败

ByteBuddy 如何使用构造函数调用类中的另一个构造函数来创建类?