Java接口和对象
在这里,我尝试使用一个名为“可测量”的接口和一个名为getMeasure的方法。问题是,我试图通过访问界面中的方法来获得程序中所有人的平均身高。其中一个问题是,由于某种原因,我无法访问getMeasure方法,最终无法获得数组中所有人的平均身高。我怎样才能解决这个问题Java接口和对象,java,oop,interface,Java,Oop,Interface,在这里,我尝试使用一个名为“可测量”的接口和一个名为getMeasure的方法。问题是,我试图通过访问界面中的方法来获得程序中所有人的平均身高。其中一个问题是,由于某种原因,我无法访问getMeasure方法,最终无法获得数组中所有人的平均身高。我怎样才能解决这个问题 class Main { public static void main(String args[]) { Person[] people = new Person[4]; people[0
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();
}
Person
类应实现可测量的:
public class Person implements Measurable {
...
}
public static double average(Measurable[] objects) {
...
for (Measurable obj : objects){
...
}
}
然后,如果您想使您的average
函数可重用(我想这是您想要的结果),您应该将Person
实例替换为measured
:
public class Person implements Measurable {
...
}
public static double average(Measurable[] objects) {
...
for (Measurable obj : objects){
...
}
}
这样,您就可以使用不同的可测量的实现来计算平均值
public class Person implements Measurable {
private String name;
private Integer height;
public Person(String name, Integer height)
{
this.name = name;
this.height = height;
}
@Override
public double getMeasure() {
return height;
}
要使用它,您必须实现。如果接口也实现了该方法,则必须添加@Override修饰符。您Person
没有实现接口
。。。使其声明公共类Person实现可测量的{…}
您的代码应该“按原样”工作,尽管您根本没有使用可测量的
接口。请张贴您得到的确切错误!只调用与接口函数同名的函数并不意味着重写它。正如Alex所解释的,您必须实现该接口才能覆盖其方法。如果OP未实现该接口,则不会使用该接口,但这并不能真正回答以下问题:“我无法访问getMeasure方法的问题之一”我试图实现接口并使用getMeasuremethod@UMLtotallydistilled我的答案是你想用的吗在这里尝试猜测思维:)在这种情况下,@Override
注释不是必需的。只要类实现接口
它就可以在没有它的情况下工作。虽然它不会以另一种方式工作-如果你有@Override
,但没有实现接口,你会得到一个编译错误。因此我提到,只有当接口也实现了@alexomai方法时,这才是必要的