Java 接口(interface)和对象

标签 java oop interface

在这里,我尝试使用名为“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/

相关文章:

java - 存储对象图形信息的正确方法是什么?

c++ - 将对象从派生对象转换为基础对象,然后再返回

原型(prototype)化为数组的 Javascript 对象成员被所有类实例共享

c - libcurl easy handle 'CURLOPT_RANGE' 选项不起作用

java - 处理实现通用接口(interface)的枚举(迭代、反序列化)

java - 安卓 |更改溢出图标(3 点菜单)颜色?

java - 如何在 Java 中返回一个集合

java - jtable 自定义模型

java - 如何以编程方式制作长阴影

inheritance - 以另一个接口(interface)的形式实现一个接口(interface)