Под абстракцией в программировании понимается сокрытие ненужной, хотя и очень важной информации и предоставление пользователю видимой только определенной ключевой или необходимой информации. Это стало возможным благодаря использованию абстрактных классов.
Абстрактный класс в C# — это, по сути, класс, который не позволяет создавать объекты. «Абстрактный» — это ключевое слово или модификатор, который делает этот конкретный класс или метод абстрактным или ограниченным. Доступ к абстрактному классу возможен только через наследование от другого класса.
Основные выводы
- Абстрактные классы — это неполные классы, которые не могут быть созданы, но служат основой для наследования другими.
- Они содержат по крайней мере одну чисто виртуальную функцию, то есть она не имеет реализации и должна быть определена любым производным классом.
- Абстрактные классы могут иметь переменные-члены и функции-члены с реализацией, но к ним нельзя получить доступ через объекты абстрактного класса.
Свойства и компоненты абстрактного класса в C#
Для инициации или доступа к абстрактному классу должны присутствовать определенные факторы. Они были перечислены следующим образом.
- Абстрактный класс создает базовый класс, к которому обычно обращаются несколько производных классов. Программисты должны создать производный класс для использования или реализации абстрактного класса.
- Таким образом, абстрактный класс должен наследоваться подклассами, которые могут даже переопределить функцию.
- Каждый абстрактный класс требует по крайней мере один абстрактный метод.
Пример абстрактного класса в C#
Так как механизм сложен и понятен только тем, кто знаком с программированием язык, лучше начать с простого примера, который поможет объяснить концепцию.
Предположим, существует класс «Дерево» с существующим разработанным методом, известным как «тип». Больше ничего не определено, и никакой другой конкретной информации не предоставлено — никто не знает ни вида дерева, ни возможных типов.
Если имеется конкретный пример дерева, то создается отдельный класс путем наследования базового класса Tree. Идея состоит в том, что новый класс, скажем, Pine или дуб, не может изменить конструкцию или определение базового класса, то есть Tree. Он должен создать свой класс, производный от дерева классов, и определить другой метод, унаследованный от базы.
Преимущества абстрактного класса в C#
- Хотя подклассы могут либо реализовать, либо переопределить абстрактный класс, некоторые поправки могут быть сделаны, которые требуют реализации определенной функции.
- Таким образом, существует большая степень гибкости при проектировании абстрактного класса в отношении того, какие методы должны быть императивно реализованы.
- Программист может выбрать, сколько абстрактных методов ему нужно в абстрактном классе. Также возможно написать код без включения абстрактных методов.
- Абстрактный класс должен быть определен только один раз, и к нему можно обращаться столько раз, сколько необходимо.
- Абстрактный класс очень полезен, когда есть набор классов, которые имеют определенную степень общности, но отличаются своей реализацией абстрактного класса.
Недостатки абстрактного класса в C#
- Абстрактный класс можно добавить в иерархию классов, только если абстрактных классов не существует.
- На объекты любого абстрактного класса можно только ссылаться, но никогда не создавать.
- Несмотря на то, что абстрактные классы не могут быть созданы, они не позволяют использовать статические переменные или методы.
- https://books.google.co.in/books?hl=en&lr=&id=UbJa11wLcqYC&oi=fnd&pg=PA125&dq=Abstract+Class+in+C%23&ots=y9lmboLlHj&sig=kk5oYAJSHpmo-FyHphcAlkUh4cc&redir_esc=y#v=onepage&q=Abstract%20Class%20in%20C%23&f=false
- https://books.google.co.in/books?hl=en&lr=&id=-w9ftEtwPGwC&oi=fnd&pg=PP8&dq=Abstract+Class+in+C%23&ots=XXCx6-5nlm&sig=CYfs0myaTnm1anSz4QUGcZ65uS4&redir_esc=y#v=onepage&q=Abstract%20Class%20in%20C%23&f=false