OriginalGriff
Вообще, способности проявляются во многих формах. В объектно-ориентированном программировании полиморфизм относится к способности языка программирования обрабатывать объекты по-разному в зависимости от их типа данных или класса. Более конкретно, это способность переопределять методы для производных классов.
Таким образом, вы можете наследовать от базового класса и переопределять методы базового класса. Тогда, даже если на метод базового класса ссылаются в переменной базового класса, содержащей экземпляр производного класса, система вызывает метод производного класса вместо базового.
Предположим, у вас есть базовый класс животных и вы производите от него классы кошек и собак.
Если базовый класс имеет метод кормления, вы можете переопределить его как в классе кошек, так и в классе собак, чтобы обеспечить правильную пищу и количество корма для правильного типа животных: 85 г Вискаса для класса кошек, 250 г породистой кеты для собаки.
Если вы затем цикл через все животные, которых вы бы использовать переменную животных и просто позвонить кормить:
for (Animal animal : animals) {
animal.Feed();
}
Система смотрит на то, какой тип находится в данный момент
animal
и называет подходящего кота.Корм или собака.Кормите по мере необходимости. Вам не нужно беспокоиться о том, что это за животное, система работает для вас на основе экземпляра, обрабатываемого в данный момент.
Вот в чем суть полиморфизма: способность проявляться во многих формах!
Теперь это имеет смысл?