Объясните пожалуйста, зачем нужны абстрактные классы?
Я понял, что они нужны для того, что бы задавать там переменные и принадлежать другим классам. Но можно же обойтись и обычным классом.
Объясните, просто и понятно пожалуйста.
Другие языки программирования и технологии
Абстрактные классы в c#
Сам по себе абстрактный класс говорит о том, что объект этого класса не должен создаваться (абстрактных членов для переопределения может и не быть), но функциональности в этом классе может быть очень много (в отличие от интерфейса). Создаваться могут только наследники этого класса. Вот и всё.
Зачем это нужно? - Объяснить сложно, т. к. это не совсем уровень для новичков, нужно уже что-то уметь в программировании и мыслить в терминах ООП.
Если вы этого не понимаете, то значит вам пока эти классы и не нужны, обходитесь обычными. Со временем поймёте суть.
Пока делайте так: Если вы считаете, что объекты базового класса не должны создаваться - помечайте их как абстрактные. А вот насколько это целесообразно и как вписывается в общую архитектуру приложение - уже вопрос опыта.
Отличие от интерфейса в том, что интерфейс предполагает возможность разработки некоторых классов сторонними разработчиками и эти классы будут совместимы с вашим ПО (например плагины для вашей проги, которые сможет написать кто угодно), а абстрактный класс разрабатывается только "одним" разработчиком для общего пользования и изменить его поведение нельзя. Но это если объяснить очень грубо. На деле всё не так и интерфейсы играют свою важную роль в программировании.
Зачем это нужно? - Объяснить сложно, т. к. это не совсем уровень для новичков, нужно уже что-то уметь в программировании и мыслить в терминах ООП.
Если вы этого не понимаете, то значит вам пока эти классы и не нужны, обходитесь обычными. Со временем поймёте суть.
Пока делайте так: Если вы считаете, что объекты базового класса не должны создаваться - помечайте их как абстрактные. А вот насколько это целесообразно и как вписывается в общую архитектуру приложение - уже вопрос опыта.
Отличие от интерфейса в том, что интерфейс предполагает возможность разработки некоторых классов сторонними разработчиками и эти классы будут совместимы с вашим ПО (например плагины для вашей проги, которые сможет написать кто угодно), а абстрактный класс разрабатывается только "одним" разработчиком для общего пользования и изменить его поведение нельзя. Но это если объяснить очень грубо. На деле всё не так и интерфейсы играют свою важную роль в программировании.
Возможно, они нужны, что бы некоторые функции обязательно были переопределены в производных классах. Почему нужно обязательно переопределять функции базового класса я не знаю. Сам только разбираюсь.
https://ru.m.wikipedia.org/wiki/Абстрактный_класс
я для текущего рабочего проекта написал на c# библиотеку маппинга свойств сущности к моделям данных и почти все классы в ней абстрактные :)
я для текущего рабочего проекта написал на c# библиотеку маппинга свойств сущности к моделям данных и почти все классы в ней абстрактные :)
Абстрактные класс это по сути интерфейс. А наследники - реализация этого интерфейса. На практике часто используется. для того, чтобы единообразно обрабатывать разные объекты, не разбирая какого типа данный объект.
Похожие вопросы
- проясните по классу в c++ по книге.
- классы на C++
- расскажите пожалуйста просто что такое класс в C++, я кодил только на С и Delphi
- Как изменить свойство всех объектов одного класса в C#?
- Зачем нужны классы в c++? Никак не могу понять... Что такое private, public зачем они нужны и т. д?
- Есть ли ошибка? Может ли возникнуть? И вообще приемлимо ли? C++ классы
- visual c++(form project) подскажите где там можно создать и описать свой класс? что то не выходит ((
- C++ Классы
- C++ Классы и Переменные
- Доступ к полям другого класса. C# Подробно внутри!