У меня есть абстрактный класс Animal, в котором хранятся некоторые общие поля, например имя, здоровье. У меня есть несколько классов животных, например, Tiger, но у меня также есть класс Fish, у которого есть дополнительное поле, а другие классы животных не имеют, canSplash
.Доступ к свойствам дочернего класса из списка объектов абстрактного класса
У меня есть список объектов Animal. Я могу получить доступ к общим полям, но я не могу получить доступ к полю canSplash
для Fish. Я ищу помощь для доступа к конкретным классам конкретных полей из абстрактного класса.
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; }
}
Почему is canSplash bool при поплавке CanSplash? Почему canSplash личный? – jdweng
canSplash является закрытым, потому что вы используете get и set для доступа к нему. Извините, плавать было ошибкой, я набрал этот вопрос. – ecclesm
удалите поле: private bool canSplash, вам это не нужно. –