这可能是非常明显的事情,但我真的在努力解决这个问题,任何帮助将不胜感激。
我正在尝试制作一个具有Activity
类的程序,该类是类的超Run
Swim
Cycle
类,并且还有另一个类称为成员。
成员有一个名为 diary 的数组列表,用于记录成员的距离
private ArrayList<Activity>diary = new ArrayList<>();
活动添加如下:
public void addActivity(Activity a){
diary.add(a);
}
现在我需要将每个类的距离放入一个数组中并显示每种活动所涵盖的正确距离,我尝试这样做:
public double[] getTotalDistances(){
double distance[];
distance = new double[3];
for (Activity r: diary){
distance[0] += r.getDistance();
}
for(Activity c: diary ){
distance[1] += c.getDistance();
}
for(Activity s: diary ){
distance[2] += s.getDistance();
}
for(int i = 0; i < distance.length; i++){
System.out.println(distance[i]);
}
return distance;
}
但这仅返回超类的 getDistance() 方法,如果我这样做:
for (Run r: diary){
distance[0] += r.getDistance();
}
然后java抱怨那些是不兼容的类型:
incompatible types. required: run, found: activity.
如果 run 是活动的子类,那么它为什么会抱怨不兼容呢?以及如何让它使用正确的方法(“运行”类中的 getDistance 方法)
谢谢!