如何解决Fruit 扩展 HealthyFood 扩展 Food,但是 Fruit 和 HealthyFood 都不能访问私有 String 名称;或私有的int cal;
说明:
在本练习中,您将创建一个带有 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 作为超级构造函数的参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。