This question already has answers here:
Java. Implicit super constructor Employee() is undefined. Must explicitly invoke another constructor [duplicate]
                                
                                    (6个答案)
                                
                        
                                6年前关闭。
            
                    
这是我的父母班

public abstract class Human {


   public Human(String name,String surname, int idno){

   }
}


这是子类

public class Personel extends Human {



    public Personel(String name,String surname, int idno)
    {

    }

}


personels构造函数不必与父类的构造函数相同,但是我所做的一切都会产生错误。

我会加
final regnumberpersonel,它不能更改,但我不能添加。

我为什么不能这样做:

public Personel()
    {todo

    }


要么

public Personel();


要么

public Personel(String name,String surname, int idno,int asda, string asdsa)
    {

    }


要么

public Personel(final regnum)
    {

    }


如果您有帮助,我会很高兴。

我这样做了,谢谢,但是现在我想从用户那里获取输入,而不是制作例如human1对象。

我有一个主类,我想创建一个对象Human human1 = new human();

我现在能做什么?它不接受。

人类human1 = new human();我必须放入括号,但是我想从用户那里拿走,但是我在构造函数3中定义了参数,因此,在上课之前我应该​​这样做吗?

最佳答案

您需要将您的Personel构造函数链链接到超类构造函数,例如

public Personel(String name, String surname, int idno) {
    super(name, surname, idno);
}


这里的super调用是构造函数链接。您不必使用与声明的构造函数中相同的参数-但您需要直接或通过同一类中的另一个构造函数链接到超类构造函数。例如,尚不清楚在最后一种情况下,使用regnum的超类构造函数参数是什么(由于某种原因,它甚至没有类型……)

10-07 13:07