Каким образом реализовать такую структуру, где был бы базовый класс с частичной реализацией и абстракцией для других классов? Удобным решением являются абстрактные классы, которые позволяют сделать такой класс, в котором будет реализация определённых процессов и абстрагирование. Для понимания использования абстрактного класса, просмотрите пример.
Что это?
Ещё один яркий пример полиморфизма. Абстрактный класс - такой класс, который может в себе содержать абстракцию и реализацию. Важным условием является то, что нельзя создавать экземпляр абстрактного класса! Это и есть основное отличие от класса с интерфейсами.
Можно выполнять любую реализацию как в обычном классе + определять абстрактные методы, свойства, события.
Когда использовать? Применение
Предположим нам нужно сделать систему с разными блюдами. Перед созданием любого блюда мы должны помыть руки (для всех блюд). Потом подготовить ингредиенты, приготовить блюдо (у каждого блюда по своему).
Реализацию абстрактного класса можно увидеть на картинке вначале поста.
Два класса, которые наследуются от абстрактного класса Dish. Для примера реализовано абстрактное свойство NameOfDish по разному в каждом классе.
Для переопределения используется ключевое слово override.
Определяем список блюд и записываем в него разные блюда.
В результате получаем данные из классов наследников с разной реализацией. Абстрактные классы, также как и интерфейсы раскрываются в разных паттернах.
Телеграмм канал: https://t.me/dotnetreview