Страницы

Поиск по вопросам

понедельник, 23 декабря 2019 г.

Полиморфизм подтипов

#c_sharp #ооп


Что из себя представляет полиморфизм подтипов в C#? Как его реализовать?
    


Ответы

Ответ 1



Полиморфизм подтипов -- это то, что обычно понимают под полиморфизмом в объектно-ориентированном программировании. Он заключается в том, что вызывающий код использует объект, опираясь только на его интерфейс (контракт), не зная при этом фактического типа. Такой подход позволяет подтипам реализовывать свое поведение и т.о. изменять поведение программы без перекомпиляции кода-клиента. Возьмем пример из Википедии: public abstract class Animal { public abstract String Talk(); } public class Cat : Animal { public override String Talk() { return "Meow!"; } } public class Dog : Animal { public override String Talk() { return "Woof!"; } } public class Program { private static void Write(Animal animal) { Console.WriteLine(animal.Talk()); } public static void Main(String args[]) { Write(new Cat()); Write(new Dog()); } } Здесь класс Animal -- это базовый тип, объявляющий интерфейс (контракт). Интерфейс состоит всего из одного метода. Далее у нас есть два дочерних класса -- Cat и Dog, каждый из которых переопределяет метод Talk своим собственным поведением, соответствующим этому классу. Метод Program.Write является в данном случае клиентом -- он принимает на вход объект типа Animal и вызывает метод Talk. При этом он не знает ничего о фактическом типе объекта, а пользуется только объявленным интерфейсом. Подсовывая ему экземпляры разных типов -- Cat и Dog -- мы получаем разное поведение (на консоль выводится разный текст).

Комментариев нет:

Отправить комментарий