0

我在使用以下代码时遇到了几个问题:

private ArrayList<TemperatureSensor> sensors = new ArrayList<TemperatureSensor>();

//[...]

private double getAverageTemperature() {
    double addition = 0;
    for(TemperatureSensor sensor : this.sensors)
        addition += sensor.getTemperature();
        return addition / this.sensors.size();
    }
}

getTemperature 方法在 TemperatureSensor 类中,它被定义为:

public int getTemperature() {
    // random number [5,40]
    return new Random(System.currentTimeMillis()).nextInt(36)+5;
}

在 getAverageTemperature() 方法中,我收到一条错误消息,指出“方法 getTemperature() 未针对温度传感器类型定义”

另外,如何从抽象类调用两个类具有的特定方法,并且它们的对象存储在 ArrayList 中?

提前致谢。

4

2 回答 2

1

代码看起来没问题。一切都编译了吗?一切都是新编译的吗?根据您的描述,我假设您的类路径中有一个旧版本的类还没有该方法。

于 2013-03-16T16:42:19.767 回答
0

再次清理并编译您的代码,因为代码看起来不错。对于您的第二个问题,请在下面找到示例

public abstract class A {


    public abstract void method();

}

public class B extends A{
    public  void method(){
        //code
    }
}

public class C extends A {
    public  void method(){
        //code
    }
}

public class Main{

    public static void main(String args[]){
        ArrayList<A> obj=new ArrayList<A>();
        obj.add(new B());
        obj.add(new C());
        for (A a : obj) {
            a.method(); // it will call respective method of B and C class
        } 
    }        

}
于 2013-03-16T16:58:22.810 回答