构造函数是一个代码块,允许您创建类的对象,并且与类同名,没有显式的返回类型。
null
每当一个类(子类)扩展另一个类(父类)时,子类都会以变量和方法的形式从其超类继承状态和行为,但它不会继承超类的构造函数,原因如下:
- 构造函数是特殊的,与类名同名。所以,如果构造函数是在子类中继承的,那么子类将包含一个父类构造函数,这违反了构造函数应该和类名同名的约束。例如,请参见以下代码:
class
Parent {
public
Parent()
{
}
public
void
print()
{
}
}
public
class
Child
extends
Parent {
public
Parent()
{
}
public
void
print()
{
}
public
static
void
main(String[] args)
{
Child c1 =
new
Child();
// allowed
Child c2 =
new
Parent();
// not allowed
}
}
如果在子类中定义父类构造函数,它将给返回类型提供编译时错误,并将其视为一种方法。但是对于打印方法,它不会给出任何编译时错误,并认为它是一种重写方法。
- 现在假设如果构造函数可以被继承,那么就不可能实现封装。因为通过使用超类的构造函数,我们可以访问/初始化类的私有成员。
- 构造函数不能作为方法调用。它在类的对象被创建时被调用,因此使用父类构造函数表示法创建子类对象没有意义。i、 e.孩子c=新的父母();
- 父类构造函数不会在子类中继承,这就是为什么在没有显式调用super或this的情况下,super()会自动添加到子类构造函数中。
本文由 萨吉德·阿里·汗 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END