我们都知道JVM在每个java程序中都为我们提供了一个默认构造函数.
但是如果我们声明任何其他类型的构造函数,那么它不提供任何类型的默认构造函数.
所以,我的问题是,当我们在程序中声明任何其他类型的构造函数时,必须声明默认构造函数.
如果是,那么解释为什么?
如果没有那么也解释为什么?
给出适当的合适例子.
解决方法:
没有必要创建默认构造函数,但最好创建默认构造函数.
如果要重用您的类,那么不创建默认构造函数将限制您的类的可重用性.
就像一个类正在扩展该类一样,派生类必须具有显式的超级调用.
考虑以下示例: –
class Base
{
public Base(int x){
//some statements
}
/*
some methods
*/
}
class Derived
{
// only one of the following will be used
public Derived(){ // This will cause a compile-time error
//some statements
}
public Derived(){ // This will work fine
//some statements
super(x);
}
/*
some methods
*/
}
这背后的原因是,如果基类没有默认构造函数,那么派生类必须在其所有构造函数声明中调用相应的super().但是如果我们在基类中有一个默认构造函数,那么对super()的调用不是必需的.
标签:java
来源: https://codeday.me/bug/20190624/1279573.html