在这里,我尝试使用名为“Measurable”的接口(interface)以及一种名为 getMeasure 的方法。问题是,我试图通过访问界面中的方法来获取程序中所有人的平均高度。问题之一我由于某种原因无法访问getMeasure方法,最后得到数组中所有人的平均高度。我该如何解决这个问题?
class Main {
public static void main(String args[]) {
Person[] people = new Person[4];
people[0] = new Person("Larry", 65);
people[1] = new Person("Susan", 45);
people[2] = new Person("Joe", -45);
people[3] = new Person("", 0);
double averageHeight = average(people);
}
public static double average(Person[] objects)
{
if (objects.length == 0) { return 0; }
double sum = 0;
for (Person obj : objects)
{
double measure = obj.getMeasure();
sum = sum + measure;
}
double result = sum / objects.length;
return result;
}
}
interface Measurable {
double getMeasure();
}
public class Person {
private String name;
private Integer height;
public Person(String name, Integer height)
{
this.name = name;
this.height = height;
}
public double getMeasure() {
return height;
}
}
最佳答案
Person
类应该实现Measurable
:
public class Person implements Measurable {
...
}
那么如果你想让你的average
函数可重用(我想这是您想要的结果),您应该替换 Person
实例 Measurable
:
public static double average(Measurable[] objects) {
...
for (Measurable obj : objects){
...
}
}
这样你就可以有不同的Measurable
计算平均值的实现。
关于Java 接口(interface)和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60617881/