为什么Java中没有继承构造函数?

构造函数是一个代码块,允许您创建类的对象,并且与类同名,没有显式的返回类型。

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
喜欢就支持一下吧
点赞11 分享