【问题标题】:Java Why the inheritance doesn''t work when there are 2 private constructors? [closed]Java 为什么当有 2 个私有构造函数时继承不起作用? [关闭]
【发布时间】:2017-12-01 14:16:02
【问题描述】:

假设我有两个班级。

第一个叫做“User1”,第二个叫做“User2”。

User2 继承 User1。

当我将 User1 的构造函数设为私有时,IDE 会报错

“User1 中没有可用的默认构造函数”。

这是为什么呢?谁能给我解释一下?

【问题讨论】:

  • 私有还是静态?您的标题和您的问题提出了两个不同的问题。
  • 你应该去了解更多关于Java Inheritance的信息。 idownvotedbecau.se/noresearch
  • 不存在静态构造函数。如果你用了static这个词,那么你没有写构造函数,你写了一个方法。
  • 我的意思是“私有”构造函数。对此感到抱歉。编辑了帖子。

标签: java inheritance


【解决方案1】:

所有标记 static 仅属于该类,例如static 方法不能被继承sub class 因为它们属于该类他们在其中被宣布。 由于每个constructor 在创建其子类的对象期间都被其子类调用,因此如果将constructor 标记为staticsubclass 将无法访问其父类的构造函数,因为它是标记为静态,因此仅属于class。这将违反继承概念的全部目的,这就是构造函数不能是静态的原因。

如果您询问的是private constructor,答案是如果父类有私有构造函数,则您不能扩展父类。您必须使构造函数可用于子类。在这种情况下,您需要有一个具有 protected or public or default 访问修饰符的默认构造函数。

【讨论】:

  • "私有默认构造函数" ...垃圾,没有私有默认构造函数这样的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
  • 2011-10-30
  • 2015-11-02
  • 1970-01-01
  • 2015-08-07
  • 2019-10-16
相关资源
最近更新 更多