所以我有一个名为character()的类,我的第二个类ChooseCharacterGUI()扩展了该类,但是当我尝试初始化ChooseCharacterGUI()来创建应用程序时,我得到错误"隐式超级构造函数字符( )未定义。必须显式调用另一个构造函数。"
这是ChooseCharacterGUI()类。
public class ChooseCharacterGUI extends character {
final String CharacterChoice;
private JFrame frame;
private JPanel ChooseCharacterMenu;
private JPanel Home;
// Launches application.
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ChooseCharacterGUI window = new ChooseCharacterGUI();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
//Creates application
public ChooseCharacterGUI() {
initialize();
}
任何人都知道如何解决这个问题?感谢。
答案 0 :(得分:0)
您的character
类很可能具有参数化构造函数,并且没有默认构造函数。 E.g。
class character {
public character(String someargument) { ... }
}
因此,您的CharacterGUI类需要在其默认构造函数中调用超类的参数化构造函数。 E.g。
class CharacterGUI {
public CharacterGUI() {
super("somedefaultvalue");
}
}
也许另一个问题是你的超级字母有一个小写的第一个字母,这是令人困惑的,你在同样具有主要功能的类中继承了它。
。当您使用它时,此代码可能需要进行一些重构。答案 1 :(得分:0)
您编写的每个类都必须有一个构造函数,并且每个构造函数都必须调用super。如果你不编写构造函数,那么Java会生成一个没有参数但只能调用super()
的函数。如果编写构造函数但没有超级调用,Java会在顶部插入一个不可见的super()
。因此,如果这些自动事件中的任何一个发生并且超类没有no-args构造函数(称为默认构造函数),则会出现此错误。
因此,您的character
类不能有默认构造函数。无论是写一个,还是在CharacterGUI
课程中,都可以调用你所拥有的character
构造函数。
我强烈怀疑你实际上并不希望CharacterGUI
扩展character
。而且,按照惯例,character
应该大写。