List<Object> allEmployees = new ArrayList<Object>();
allEmployees.add(new SalariedEmployee());
Object SalariedEmployee = allEmployees.get(0);
allEmployees.add(new HourlyEmployee());
Object HourlyEmployee = allEmployees.get(1);
错误说:
类SalariedEmployee中的构造函数SalariedEmployee无法应用于给定类型; required:java.lang.String,java.lang.String,int;找不到论点;原因:实际和正式的参数列表长度不同。
SalariedEmployee类中的代码是:
SalariedEmployee (String name, String afm, int salary){
super (name,afm);
this.name = name;
this.afm = afm;
this.salary = salary;
}
这里的业余程序员,也是社区中的新人。提前谢谢!
答案 0 :(得分:1)
SalariedEmployee需要构造函数参数,例如:
List<Object> allEmployees = new ArrayList<Object>();
allEmployees.add(new SalariedEmployee("someName", "AFM", 2000));
Object SalariedEmployee = allEmployees.get(0);
allEmployees.add(new HourlyEmployee(40, 20, "someOtherName", "AFM2"));
Object HourlyEmployee = allEmployees.get(1);
答案 1 :(得分:1)
如果在类中未指定其他constructor
,则Java编译器提供默认(无参数)constructor
。但是,如果类包含任何构造函数(在我们的示例中类似于SalariedEmployee
),那么,如果您计划使用该实例化实例化类,则还需要指定无参数构造函数。
在您的示例中,指定了3个参数constructor
,因此未提供参数constructor
。当我们尝试创建没有参数constructor
的对象时,它会显示错误。要修复它,我们需要在类中添加无参数constructor
,例如:
public SalariedEmployee(){
}
答案 2 :(得分:0)