から親クラスの変数にしかアクセスできないので、私が実行している問題はこれです。私は、ArrayList内のすべてのオブジェクトを表示するために使用しているプログラムの一部としてメソッドを記述しました。このArrayListには、菌類、花、雑草の3種類のオブジェクトが格納されています。 plantList.get(i).getName()
とplantList.get(i).getColor
メソッドに問題なく電話することができます。これらの変数は両方とも、Plantという親クラスに属しています。しかし、次のメソッドplantList.get(i).getPoison()
(このメソッドはサブクラスFungusに属しています)を呼び出すと、変数Fungusを見つけることができないというコンパイラエラーが発生します。メソッド
私はサブクラスに固有の他のすべての変数と同じことを試みました。だから、私は親クラス '植物'から変数をアクセスできますが、 '真菌'の '花'や '雑草'のサブクラスからはアクセスできません。私はサブクラスやスーパークラスを初めて使うので、どこに問題が発生しているのかを正確に把握するのに苦労しています。
public static void displayPlant(ArrayList<Plant> plantList) {
for (int i = 0; i < plantList.size(); i++) {
System.out.print(plantList.get(i).getName());
System.out.print(plantList.get(i).getID());
System.out.print(plantList.get(i).getColor());
if (plantList.get(i).contains(Fungus) == true) {
System.out.print(plantList.get(i).getPoison());
}
else if (plantList.get(i).contains(Flower) == true) {
System.out.print(plantList.get(i).getSmell());
System.out.print(plantList.get(i).getThorns());
}
else {
System.out.print(plantList.get(i).getPoison());
System.out.print(plantList.get(i).getEdible());
System.out.print(plantList.get(i).getMedicinal());
}
}
}
これは予想される動作です。子クラス固有のメソッドにアクセスするには、それぞれの子クラスの型にキャストを入力する必要があります。 – JavaHopper