Error: Actual and formal argument lists differ in length when using super method
Error: Actual and formal argument lists differ in length when using super method
public class Pizza
{
private int itemNum;
private String size;
private String base;
private String extraCheese;
private String extraGarlic;
Pizza(int itemNum, String size, String base, String extraCheese, String extraGarlic)
{
this.itemNum = itemNum;
this.size = size;
this.base = base;
this.extraCheese = extraCheese;
this.extraGarlic = extraGarlic;
}
public String toString()
{
return "Pizza: " + itemNum + ", " + size + ", " + base + ", " + extraCheese + ", " + extraGarlic;
}
}
这是父class,下面class是派生class。
class Curry extends Pizza
{
String curryType;
Curry(int itemNum, String size, String curryType)
{
// Error occurs here
super(itemNum, size);
this.curryType = curryType;
}
public String toString()
{
// return "Curry: " + itemNum + ", " + size + ", " + curryType;
return "Curry";
}
}
required: int,String,String,String,String found: int,String
reason: actual and formal argument lists differ in length 1 error
您传递给 super
构造函数的东西太少了。 Pizza
的构造函数需要 5 个东西,而你只提供了 2 个。
如果您不需要额外的 3 个参数,请将它们从父构造函数中删除。这既简化了调用,又确保在您改变对象上的任何其他状态信息之前,只使用它需要存在的内容创建对象。
或者,如果父级 class 需要这些参数,您始终可以创建另一个仅接受这些值的构造函数:
public Pizza(int itemNum, String size) {
this(itemNum, size, null, null, null);
}
...但是根据您的程序的预期工作方式,这可能会引入虚假的 NullPointerException
s。
public class Pizza
{
private int itemNum;
private String size;
private String base;
private String extraCheese;
private String extraGarlic;
Pizza(int itemNum, String size, String base, String extraCheese, String extraGarlic)
{
this.itemNum = itemNum;
this.size = size;
this.base = base;
this.extraCheese = extraCheese;
this.extraGarlic = extraGarlic;
}
public String toString()
{
return "Pizza: " + itemNum + ", " + size + ", " + base + ", " + extraCheese + ", " + extraGarlic;
}
}
这是父class,下面class是派生class。
class Curry extends Pizza
{
String curryType;
Curry(int itemNum, String size, String curryType)
{
// Error occurs here
super(itemNum, size);
this.curryType = curryType;
}
public String toString()
{
// return "Curry: " + itemNum + ", " + size + ", " + curryType;
return "Curry";
}
}
required: int,String,String,String,String found: int,String
reason: actual and formal argument lists differ in length 1 error
您传递给 super
构造函数的东西太少了。 Pizza
的构造函数需要 5 个东西,而你只提供了 2 个。
如果您不需要额外的 3 个参数,请将它们从父构造函数中删除。这既简化了调用,又确保在您改变对象上的任何其他状态信息之前,只使用它需要存在的内容创建对象。
或者,如果父级 class 需要这些参数,您始终可以创建另一个仅接受这些值的构造函数:
public Pizza(int itemNum, String size) {
this(itemNum, size, null, null, null);
}
...但是根据您的程序的预期工作方式,这可能会引入虚假的 NullPointerException
s。