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() は、タイプ TemperatureSensor に対して定義されていません」というエラーが表示されます。

また、2 つのクラスが持つ特定のメソッドを呼び出し、それらのオブジェクトが ArrayList に格納されている場合は、抽象クラスからどのように呼び出すのですか?

前もって感謝します。

4

2 に答える 2

1

コードは問題ないようです。すべてがコンパイルされますか? すべてが新しくコンパイルされていますか? あなたの説明から、クラスパスにそのメソッドがまだない古いバージョンのクラスがあると思います。

于 2013-03-16T16:42:19.767 に答える
0

コードが正常に見えるので、もう一度コードをクリーンアップしてコンパイルします。2番目の質問については、以下の例を見つけてください

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 に答える