问题描述
说明:
在本练习中,您将创建一个带有 HealthyFood 子类的 Food 超类。 HealthyFood 也将有一个 Fruit 子类。创建这些类后,在 FoodTester 类中测试结果。
Food 类将有两个实例变量,一个用于存储名称,另一个用于存储卡路里。
食物也应该有两个访问器(getter 方法):
public String getName()
public int getCal()
HealthyFood 类将只有一个实例变量 group,它代表食物组并且应该具有以下访问器(getter 方法):
public String getGroup()
Fruit 类将有两个实例变量,一个布尔指示符(如果水果是本地的)和颜色。访问器方法应该是:
public boolean isLocal()
public String getColor()
构造函数应遵循以下格式:
public Food (String foodName,int calories)
public HealthyFood(String foodName,int calories,String foodGroup)
public Fruit(String foodName,boolean isLocal,String foodColor)
最后,Food 类应该有一个 toString 打印: 名字有卡路里
例如:
Ice Cream has 200 calories
实际代码:
FoodTester.Java
public class FoodTester {
public static void main(String[] args) {
}
}
水果.java
public class Fruit extends HealthyFood {
private boolean local;
private String color;
public Fruit(String foodName,String foodColor){
super(name,calories,"Strings");
local = isLocal;
color = foodColor;
}
public boolean isLocal(){
return local;
}
public String getColor(){
return color;
}
}
HealthyFood.java
public class HealthyFood extends Food {
private String group;
public HealthyFood(String foodName,String foodGroup){
super(name,cal);
group = foodGroup;
}
public String getGroup(){
return group;
}
}
食品.java
public class Food {
private String name;
private int cal;
public Food(String foodName,int calories){
name = foodName;
cal = calories;
}
public String getName(){
return name;
}
public int getCal(){
return cal;
}
public String toString(){
return name + " has " + cal + " calories";
}
}
错误信息:
HealthyFood.java:6: error: name has private access in Food
super(name,cal);
^
HealthyFood.java:6: error: cal has private access in Food
super(name,cal);
^
Fruit.java:7: error: name has private access in Food
super(name,"Strings");
^
3 errors
解决方法
尝试这样修改:
public HealthyFood(String foodName,int calories,String foodGroup){
super(foodName,calories);
和
public Fruit(String foodName,boolean isLocal,String foodColor){
super(foodName,calories,"Strings");
你应该把 foodName 或calsal 作为超级构造函数的参数。