Я немного новичок в программировании, и у меня вопрос о классах, наследовании и полиморфизме в С#. Изучая эти темы, я иногда сталкиваюсь с кодом, который выглядит примерно так:
Animal fluffy = new Cat(); // where Animal is a superclass of Cat*
Это меня смущает, потому что я не понимаю, почему кто-то создавал переменную типа Animal для хранения объекта типа Cat. Почему бы просто не написать это человеку:
Cat fluffy = new Cat();
Я понимаю, почему это законно хранить дочерний объект в переменной родительского типа, но не почему это полезно. Есть ли веская причина хранить объект Cat
в переменной Animal
vs. a Cat
? Может ли человек дать мне пример? Я уверен, что это имеет какое-то отношение к полиморфизму и переопределению метода (и/или скрытию метода), но я не могу обернуться вокруг него. Спасибо заранее!