我会让代码和错误进行讨论,因为我真的认为他们说除了之外的一切都不应该发生!有谁知道如何进行编译?
class CountDownTimerGUI extends BHTimerGUI
{
private TimerJPanel control;
private TimerDisplayJPanel disp;
public CountDownTimerGUI(TimerJPanel control, TimerDisplayJPanel disp)
>> {
this.control = control;
this.disp = disp;
}
}
(>>
表示错误行)
这会覆盖BHTimerGUI
的构造函数,其构造函数如下:
public BHTimerGUI(TimerJPanel control, TimerDisplayJPanel disp)
{
this.control = control;
this.disp = disp;
}
I:\Java\NetBeansProjects\Blue Husky's Timer 2.0.0\src\bhtimer\GUI.java:145: cannot find symbol
symbol : constructor BHTimerGUI()
location: class bhtimer.BHTimerGUI
{
NetBeans显示一个弹出窗口,其中包含以下文本:
constructor BHTimerGUI in class bhtimer.BHTimerGUI cannot be applied to given types;
required: bhtimer.TimerJPanel,bhtimer.TimerDisplayJPanel
found: no arguments
reason: actual and formal argument lists differ in length
答案 0 :(得分:6)
是的,这应该发生!您没有初始化超类构造函数。 试试这个构造函数:
public CountDownTimerGUI(TimerJPanel control, TimerDisplayJPanel disp){
super(control, disp);
this.control = control;
this.disp = disp;
}
答案 1 :(得分:5)
构造函数在Java中不可覆盖。
我们需要看到BHTimerGUI的构造函数,但听起来像不是一个no-args构造函数,在这种情况下你需要显式编写一个超级调用来编写它,正确的参数例如在CountDownTimerGUI中将其添加为构造函数的第一行:
super(control, disp);
编译器此刻将插入:
super();
但那不会在超类中找到构造函数。
答案 2 :(得分:1)
BHTimerGUI
的构造函数采用什么参数?您可能需要将此行添加到CountDownTimerGUI
的构造函数顶部:
super(control, disp);
答案 3 :(得分:1)
该消息告诉您,您编写的代码需要调用超类的no-arg默认构造函数。不幸的是,你还没有写过。
正如其他人所解释的那样,解决方案是显式调用已定义的超类构造函数之一。
将来看到此消息时,请务必打开超类的Java文档,并检查已实现的构造函数的参数。