OriginalGriff
abstract
в концепции интерфейсов и абстрактных классов нет ничего общего с абстракция методика организации сложных вычислительных систем.
Техника абстрагирования (один из столпов OOPS) не обязательно о «сокрытии» чего-либо, а об установлении уровня сложности, на котором человек взаимодействует с системой, подавляя более сложные детали ниже текущего уровня. Это как автомобиль: вы «знаете», что он сделан из блоков: «зона отдыха», «багажное отделение», «двигатель», «тормозная система», «система рулевого управления», потому что это уровень абстракции на которые большинство людей взаимодействуют с транспортным средством, но на самом деле они обычно не разрабатываются изолированно: тормозная система взаимодействует с рулевым управлением и двигателем, например, для предотвращения скольжения (противобуксовочная система) и т. д. И каждый из этих «блоков» состоит из гораздо более сложных узлов, многие из которых выполняют несколько ролей в нескольких системах, составляющих единое транспортное средство.
abstract
методы не то же самое - это способ "сказать" системе, что это элементы, которые должен быть предоставленным реализацией класса для того, чтобы включить абстрактный класс или интерфейс в код. Это гораздо больше похоже на членство в клубе - в клубе есть правила, которым нужно следовать, иначе вы можете не быть членом. Например, в" чайном клубе "на работе могут быть" взносы", которые вы должны платить каждый месяц, чтобы пить чай - если вы не платите свои взносы, вы выбрасываетесь и не можете пить чай! Когда вы производите от интерфейса абстрактного класса, методы, свойства и т. д. являются "правилами", которым вы должны подчиняться - или фактически реализовывать - для того, чтобы получить новый класс.