Переопределение метода через override. Почему не срабатывает?
 а ведь если я не ошибаюсь переопределяет метод и для родителя тоже.
Если создан объект как родитель - то и метод будет родителя. Переопределение работает только в том случае, если объект был действительно создан как наследник (причем неважно в какой тип данных его потом положили - главное как сконструировали)
Подобного рода наследования приводят к очень хрупкому коду. Именно поэтому ОПП не является моделированием реальности, иначе потом поддерживать эти наркоманские зависимости будет невозможно и любые изменения на любом уровне будут приводить к тому, что где-то что-то постоянно будет отваливаться и чиня в одном месте, мы будем ломать в другом.
Кроме того, что тебе стоит прочитать хоть какую-то книженцию по шарпею, следует так же изучить принципы SOLID.