【问题标题】:Is the constructor inherited in java? [duplicate]java中的构造函数是继承的吗? [复制]
【发布时间】:2018-09-27 00:36:39
【问题描述】:

我们知道super()方法基本上是用来访问超类构造函数的,这只能通过使用扩展关键字来促进继承概念,那么我们怎么能说构造函数不是继承的呢?

【问题讨论】:

  • 您可以尝试在构造函数中添加一个 println 来查看是否调用了父构造函数。

标签: java


【解决方案1】:

正如 Java doc 所说,

子类从其超类继承所有成员(字段、方法和嵌套类)。 构造函数不是成员,因此子类不会继承它们,但子类可以调用超类的构造函数。

摘自here,阅读全文:

【讨论】:

    【解决方案2】:

    我认为您所说的称为构造函数链接。现在什么是构造函数链

    构造函数链接通过使用继承发生。一个子类 构造方法的第一个任务是调用它的超类的构造方法 方法。这确保了子类对象的创建开始 在继承中初始化它上面的类 链。

    在一个继承链中可以有任意数量的类。每一个 构造方法将调用链直到顶部的类 已达到并初始化。然后下面的每个后续课程都是 当链回到原始子类时初始化。 这个过程称为构造函数链接。

    来源-(https://www.thoughtco.com/constructor-chaining-2034057)

    【讨论】:

      【解决方案3】:

      构造函数是一段代码,允许您创建类的对象,它与类同名,没有明确的返回类型。

      当一个类(子类)扩展另一个类(父类)时,子类以变量和方法的形式从其父类继承状态和行为,但不继承父类的构造函数

      原因:

      • 构造函数是特殊的并且与类名同名。
      • 构造函数不能作为方法调用。在创建类的对象时调用它
      • 父类构造函数不会在子类中继承,这就是为什么如果没有显式调用 super 或 this,super() 会自动添加到子类构造函数中。

      【讨论】:

        猜你喜欢
        • 2019-01-12
        • 2018-10-30
        • 1970-01-01
        • 2013-03-21
        • 2011-09-09
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 2014-09-25
        相关资源
        最近更新 更多