Вы не можете так разыгрывать.Ваш человек - , а не отец, поэтому приведение к одному не сработает.Вы можете привести только к чему-то, что объект является .
Person p1 = new Person();
Person p2 = new Father();
p1.father = (Father)p2;
Или напрямую:
Father p2 = new Father();
p1.father = p2;
Но быть отцом не является хорошей дифференциацией виерархия классов.Я, вероятно, не стал бы создавать собственный класс для него: быть отцом - это просто одна из многих ролей, которую выполняет один человек, поэтому я бы удалил этот класс и объявил бы член father
как обычный Person
,То же самое для Parent
.