Java “隐式超级构造函数字符()未定义。必须显式调用另一个构造函数。”错误

Java “隐式超级构造函数字符()未定义。必须显式调用另一个构造函数。”错误,java,undefined,Java,Undefined,因此,我有一个名为character的类,我的第二个类ChooseCharacterGUI扩展了该类,但是当我尝试初始化ChooseCharacterGUI以创建应用程序时,我得到一个错误:隐式超级构造函数character未定义。必须显式调用另一个构造函数 这是ChooseCharacterGUI类 public class ChooseCharacterGUI extends character { final String CharacterChoice; private JFrame

因此,我有一个名为character的类,我的第二个类ChooseCharacterGUI扩展了该类,但是当我尝试初始化ChooseCharacterGUI以创建应用程序时,我得到一个错误:隐式超级构造函数character未定义。必须显式调用另一个构造函数

这是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();
}
有人知道我怎么解决这个问题吗?谢谢。

您的角色类很可能有一个参数化构造函数,而没有默认构造函数。例如

class character {
     public character(String someargument) { ... }
}
因此,CharacterGUI类需要在其默认构造函数中调用超类的参数化构造函数。例如

class CharacterGUI {
     public CharacterGUI() {
         super("somedefaultvalue");
     }
}

也许另一个问题是,您的超类有一个小写的第一个字母,这让人感到困惑,您在类中继承了这个字母,这个类也有主函数。这段代码在运行时可能需要一些重构。

您编写的每个类都必须有一个构造函数,并且每个构造函数都必须调用super。如果不编写构造函数,Java将生成一个没有参数的构造函数,它只调用super。如果您编写了一个构造函数但没有超级调用,Java会在顶部插入一个不可见的超级。因此,如果这些自动事件中的任何一个正在发生,并且超类没有称为默认构造函数的无参数构造函数,则会出现此错误

因此,您的角色类不能有默认构造函数。要么编写一个,要么在CharacterGUI类中调用您拥有的任何字符构造函数


我强烈怀疑您实际上不想让CharacterGUI扩展character。而且,按照惯例,字符应该大写。

如错误消息所示,通过调用另一个构造函数。您的字符类似乎没有默认构造函数,您应该在派生类的构造函数中显式调用它的构造函数。您的字符类没有无参数构造函数,因此,您需要显式调用提供的构造函数。至少有3种方法可以修复它。1通过为不带参数的字符编写构造函数,2通过为调用字符构造函数的ChooseCharacterGUI编写构造函数,3通过删除单词extends character。如果没有更多的信息,很难知道应该做什么;见链接。唯一需要补充的是,命名类字符违反了Java风格。但不要将其更改为Character,因为这是一个标准类名。。。借用可能会导致可读性问题。这是我的字符类中的代码-public character String iName,String iGender{我刚刚将此代码添加到我的ChooseCharacterGUI构造函数中,它似乎已经工作了-public ChooseCharacterGUI{supertest,Male;initialize;}感谢您的帮助。