2014-04-26 160 views
-1

我试图将我的Vehicle类扩展为HumanPowered类 - 每小时有一个卡路里字段。这是我第一次尝试扩展课程,所以我在这里有点困惑。Java:扩展类

class Vehicle 
{ 
String description; 
String idNumber; 
int numWheels; 

public Vehicle(String aDescription, String aIdNumber, int aNumWheels) 
{ 
    description = aDescription; 
    idNumber = aIdNumber; 
    numWheels = aNumWheels; 
} 
void setDescription (String aDescription) 
{ 
    description = aDescription; 
} 
void setIdNumber (String aIdNumber) 
{ 
    idNumber = aIdNumber; 
} 
void setNumWheels (int aNumWheels) 
{ 
    numWheels = aNumWheels; 
} 
public String getDescription() 
{ 
    return description; 
} 
public String getIdNumber() 
{ 
    return idNumber; 
} 
public int getNumWheels() 
{ 
    return numWheels; 
} 
public String toString() 
{ 
    String result= String.format("ID: %s Description: %s Wheels: %d",idNumber,description,numWheels); 
    return result; 
} 

} 
class humanPowered extends Vehicle 
{ 
int calories; 
public humanPowered(String aDescription, String aIdNumber, int aNumWheels, int aCalories) //Error here 
{ 
    description = aDescription; 
    idNumber = aIdNumber; 
    numWheels = aNumWheels; 
    calories = aCalories; 
} 
void setCalories (int aCalories) 
{ 
    calories = aCalories; 
} 
public int getCalories() 
{ 
    return calories; 
} 
public String toString() 
{ 
    String result= String.format("ID: %s Description: %s Wheels: %d Calories per Hour: %d",idNumber,description,numWheels, calories); 
    return result; 
} 
} 

我得到说我的构造上面标记为我humanPowered类错误“隐超构造车辆()是不确定的。必须明确地调用另一个构造。”我无法弄清楚我哪里会出错。感谢您的帮助!

+1

复制完整的错误信息,粘贴它进入谷歌,点击你得到的第一个结果。你走了,你有一个答案。 –

回答

3

Vehicle没有默认构造函数因此您必须调用它的构造函数形式humanPowered类在其构造函数的第一行传递必需的参数。

public humanPowered(String aDescription, String aIdNumber, int aNumWheels, int aCalories)  
{ 
    super(aDescription,aIdNumber,aNumWheels); 
    ...//other code 
} 

要记住的要点:

  • 每类有默认构造函数是无参数的构造
  • 如果类创建一个构造函数传递参数,然后通过默认构造函数不会创建
  • 每个构造默认情况下调用其超类的默认构造函数