我有一个关于Java中的默认构造函数和继承的问题。
通常,如果您编写了一个类并且不包含任何构造函数,Java会自动为您提供一个默认构造函数(一个不带参数的构造函数),它会用一些默认值(0、null或false)初始化该类的所有实例变量(如果有的话)。但是,如果您编写了一个带有一些参数的构造函数,并且没有编写任何默认构造函数,那么Java就不会提供默认构造函数。我的问题是:继承自其他类的类是什么情况-如果我编写了一个构造函数,其中有一些参数,但没有包括默认构造函数,它们是否继承了超类的默认构造函数?
发布于 2009-02-09 03:38:15
如果不创建构造函数,则the default empty constructor is automatically created.
一直都是。
发布于 2009-02-08 11:18:29
除非您使用super(...)构造函数调用其父对象的空构造函数。注意:它对所有你的类都是这样做的,甚至是那些扩展Object的类。
这不是继承,子类不会用相同的参数得到相同的构造函数。但是,您可以添加调用超类的一个构造函数的构造函数。
发布于 2012-11-30 02:49:48
基本规则是对构造函数的调用(或调用)应该是JVM需要执行的第一个语句,
因此,当您有一个只有参数化构造函数而没有默认构造函数的超类,并且基类没有显式调用超类的参数化构造函数时,JVM提供了super();调用,它会抛出错误,因为超类没有默认构造函数,所以我们要么在超类中提供默认构造函数,要么在基类构造函数中显式调用超类的参数化构造函数。当我们给出显式调用时,JVM不会费心去放入行super();因为构造函数调用应该是方法的第一个语句,这是不可能发生的(因为我们的显式调用)。
https://stackoverflow.com/questions/525548
复制相似问题