提供参数时显示'找不到参数'的构造函数

时间:2017-04-08 09:15:48

标签: java arguments

新成员,第一次发布海报。请原谅我的问题中的任何错误或失礼。

超类:

if((df3.iloc[i]<df3.iloc[i-1]) & (df3.iloc[i+1]<df3.iloc[i])):

子类:

public Person(String n,String pos, String db, String dW, TimePeriods tP,double bS,IManager m){
    setName(n);
    position=Position.valueOf(pos);
    dob=LocalDate.parse(db);
    dateWorking=LocalDate.parse(dW);
    timePeriod=tP;
    baseSalary=bS;
}

我的错误发生在子类CEO构造函数上:

  

构造函数类Person中的Person不能应用于给定的类型;   required:String,String,String,String,TimePeriods,double,IManager
  发现:没有参数原因:实际和正式的参数列表不同   长度

任何人都可以帮我找出为什么找不到我的论点吗?

1 个答案:

答案 0 :(得分:2)

因为您没有在Person类构造函数中调用super(..)构造函数(使用CEO),编译器会尝试在第一个中添加默认的super() CEO构造函数的行。

但是,由于您没有super()类的零参数构造函数,因此调用默认值Person无法编译。

所以,在super(n, pos, dob, etc..)课程中添加CEO来电,如下所示:

public CEO(String n,String pos, String dob, 
        String dW, TimePeriods tP,double bS, IManager m){
  super(n, pos, dob, dw, tP, bS, m);//calls superclass i.e., Person constructor
}

此外,你的类的构造函数有巨大的参数列表,这很难阅读/维护,我强烈建议你需要考虑使用 Builder模式重构你的类(看here),这样可以降低复杂性,代码也易于阅读和维护。