Java:如何解决错误:“未定义隐式超级构造函数”

问题描述 投票:0回答:1

我有以下问题:implicit super constructor is undefined must invoke another constructor java。我有两个类,一个继承并调用了超级类-方法。

人员分类:

    public class Person {
        private String firstName;
        private String name;
        private Date birthday;
        private Gender gender = Gender.Unknown;

        Person(String fn, String n, Date d, Gender g){  
            firstName = fn;
            name = n;
            birthday = d;
            gender = g;
        }

        Person(Person p){
            firstName = p.firstName;
            name = p.name;
            birthday = new Date(p.birthday);
            gender = p.gender;
        }

        Person(String fn, String n){
            firstName = fn;
            name = n;
        }

和第二类:

    public class Student extends Person implements Noten {
        private int nr;
        private String st;


        Student(int m, String s){
            this.nr= m;
            this.st= s;
        } 

        Student(Person p) {
            super(p);
            // TODO Auto-generated constructor stub
        }

为什么要扩展到类Person,学生类必须实现Stundet(Person p)-方法?

一个解决方案:将Person()-方法添加到Person-Class

    Person(){
    System.out,println("Hello World"};

仍然不起作用。

第一个问题:为什么super(p)-方法不起作用?

第二个问题:即使不添加Person(),如何在Person-Class中没有参数的情况下,如何使它工作?

第三个问题:为什么不添加Person()-起作用?

java class inheritance super superclass
1个回答
1
投票

第一个问题:为什么super(p)-方法不起作用?

在[[second Student构造函数中,它工作正常。

第二个问题:即使不添加Person()-没有参数的Person-Class,我如何使它工作?

您需要在该[[first
Person构造函数中使用super(...)语法调用Student构造函数的

one,因为您必须至少提供一个firstName和一个name

第三个问题:为什么不添加Person()-起作用?

Person添加了无参数构造函数确实有效,因为编译器现在可以在first

Person构造函数中隐式调用该Student构造函数。
© www.soinside.com 2019 - 2024. All rights reserved.