未定义的构造函数(java)

Phi*_*eil 2 java methods inheritance constructor

所以我有一个名为User的java类,它包含一个像这样的构造函数:

public class User extends Visitor {
    public User(String UName, String Ufname){
        setName(UName);
        setFname(Ufname);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后他的问题出现在我的另一个名为Admin的类中:

public class Admin extends User {  //error "Implicit super constructor User() is undefined for default constructor. Must define an explicit constructor"

//public Admin() { } //tried to add empty constructor but error stays there

    //}


    public void manage_items() {            

        throw new UnsupportedOperationException();
    }

    public void manage_users() {   

        throw new UnsupportedOperationException();
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到的错误Implicit super constructor User() is undefined for default constructor. Must define an explicit constructor at the place marked in the code.我不知道如何解决这个问题,而且我是java的新手.

Jam*_*esB 6

如果不向类添加构造函数,则会自动为您添加一个构造函数.对于Admin类,它将如下所示:

public Admin() { 
    super();
}
Run Code Online (Sandbox Code Playgroud)

调用super()在父User类中调用以下构造函数:

public User() {
    super();
}
Run Code Online (Sandbox Code Playgroud)

由于此构造函数不存在,您将收到错误消息.

有关默认构造函数的更多信息,请参见此处:http: //docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

您不必为您的类提供任何构造函数,但在执行此操作时必须小心.编译器自动为没有构造函数的任何类提供无参数的默认构造函数.此默认构造函数将调用超类的无参数构造函数.在这种情况下,如果超类没有无参数构造函数,编译器将会抱怨,因此您必须验证它是否存在.如果你的类没有显式的超类,那么它有一个隐式的超类Object,它有一个无参数的构造函数.*