"隐式超级构造函数character()未定义。必须显式调用另一个构造函数。"错误

时间:2015-03-15 00:10:47

标签: java undefined

所以我有一个名为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();
}

任何人都知道如何解决这个问题?感谢。

2 个答案:

答案 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应该大写。