微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Fruit 扩展 HealthyFood 扩展 Food,但是 Fruit 和 HealthyFood 都不能访问私有 String 名称;或私有的int cal;

如何解决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 举报,一经查实,本站将立刻删除。