私は、いくつかの一般的なフィールド(例:名前、健康)を保存する抽象クラスAnimalを持っています。私は多くの動物クラス、例えばタイガーを持っていますが、他の動物クラスには追加フィールドがあるクラスFishもあります。canSplash
。抽象クラスオブジェクトのリストから子クラスのプロパティにアクセスする
私はAnimalオブジェクトのリストを持っています。共通のフィールドにはアクセスできますが、FishのフィールドcanSplash
にはアクセスできません。私は抽象クラスから具体的なクラスの特定のフィールドにアクセスするための助けを探しています。
class Zoo
{
public List<Animal> animals = new List<Animal>();
public Zoo()
{
animals.Add(new Monkey());
animals.Add(new Tiger());
animals.Add(new Fish());
}
public static void displayZooPopulation()
{
foreach (var a in animals)
{
if (a.species == "fish" && a.CanSplash)
{
Console.WriteLine("{0} can splash",a.Name);
}
}
}
}
class Fish : Animal {
private bool canSplash
public bool CanSplash { get; set; }
}
なぜCanSplashは浮動小数点ですか?なぜcanSplashはプライベートですか? – jdweng
canSplashは、getsとsetsを使ってアクセスするため、privateです。申し訳ありませんが、フロートはこの質問を入力した間違いでした。 – ecclesm
フィールドを削除する:private bool canSplash、あなたはそれをする必要はありません。 –