当前位置: 首页 > 面试题库 >

如何解决“隐式超级构造函数classA()不可见。必须显式调用另一个构造函数吗?

乐正涵忍
2023-03-14
问题内容

我有一个带有私有构造函数的类’ClassA’。

public final class ClassA{
  private ClassA{
  }

  public static void main(String[] arg) }{
  ;
  ;
  ;
  }
}

现在,我正在扩展类’ClassA’[ 在执行此操作之前删除了 final 关键字]

public class ClassB extends ClassA{
     public static void main(String[] arg) }{
      ;
      ;
      ;
      }

}

现在,我得到了Implicit super constructor classA() is not visible. Must explicitly invoke another constructor。这是什么意思,如何解决?

注意 我不能更改ClassA构造函数的访问说明符。


问题答案:

将ClassA的构造方法可见性从更改privateprotected

构造函数总是从调用超类构造函数开始。如果构造函数显式包含对超类构造函数的调用,则使用该构造函数。否则,将隐含无参数构造函数。如果无参数构造函数不存在或对子类不可见,则会出现编译时错误。



 类似资料:
  • 问题内容: 为什么Eclipse总是在构造函数上给我错误: 错误是: 类 密集板 类 板 问题答案: 您只需执行此操作即可将值发送到父类。

  • 可能的重复: 为什么this()和super()必须是构造函数中的第一条语句? 为什么子类构造函数必须显式调用超类构造函数?这是什么原因呢?

  • 问题内容: 我有一些简单的Java代码,其结构与此类似: 我将有很多的子类,每个子类以自己的方式(模板方法模式)实现方法。 这很好用,但是我不喜欢子类中有多余的构造函数。输入更多,难以维护。如果要更改构造函数的方法签名,则必须更改所有子类。 当我从子类中删除构造函数时,出现此编译时错误: 我想做的事可能吗? 问题答案: 你会收到此错误,因为没有构造函数的类具有默认构造函数,该构造函数没有参数,并且

  • 如果将移到构造函数的最后一行,我不明白为什么下面的代码会显示错误。 我已经检查了很多关于StackOverflow的答案,但我仍然不能理解这其中的原因。请帮我用一些简单的例子和解释弄清楚这个错误。

  • 问题内容: 可以这么说,我有一个扩展超类的子类。在什么情况下我需要显式键入以使超类构造函数运行? 我正在看一本书中有关抽象类的示例,当它们使用非抽象子类对其进行扩展时,该子类的默认构造函数为空,并且有一条评论说将调用超类的默认构造函数。同时,我还在这里看到有人未明确致电问题的实例。 与从子类的默认/非默认构造函数调用超类的默认/非默认构造函数有区别吗? 问题答案: 你 永远都不 需要 如果您不指定

  • 我有一个班在Java延伸了另一个班 我需要构造函数来运行超级ctor 这是我的基本代码: 我想从子类中调用它 我怎么做,因为我得到错误“构造函数调用必须是构造函数中的第一个语句”,但我需要构建ctor 谢谢