Конечно, важно понимать поведение интерфейса и абстрактного класса в ООП (и как языки их обрабатывают), но я думаю, что также важно понимать, что именно означает каждый термин. Можете ли вы представить себе, что команда if
не работает точно как значение термина? Кроме того, на самом деле некоторые языки сокращают, даже больше, различия между интерфейсом и абстрактным ... если случайно однажды два термина работают почти одинаково, по крайней мере, вы можете сами определить, где (и почему) должен быть любой из них используется для.
Если вы читаете некоторые словари и другие шрифты, вы можете найти разные значения для одного и того же термина, но с некоторыми общими определениями. Я думаю, что эти два значения, которые я нашел в этом сайте , действительно, действительно хороши и подходят.
Интерфейс:
вещь или обстоятельство, которое позволяет отдельным и иногда несовместимым элементам эффективно координировать действия.
Аннотация:
Нечто, которое концентрирует в себе основные качества чего-то более обширного или более общего или нескольких вещей; сущность.
Пример:
Вы купили машину, и ей нужно топливо.
Ваша модель автомобиля XYZ
, жанр ABC
, так что это конкретный автомобиль, конкретный экземпляр автомобиля. Автомобиль не настоящий объект. Фактически, это абстрактный набор стандартов (качеств) для создания конкретного объекта. Короче говоря, Car - это абстрактный класс , это "нечто, концентрирующее в себе основные качества чего-то более обширного или более общего" .
Для заправки топливного бака следует использовать только топливо, соответствующее спецификации автомобиля. На самом деле, ничто не может ограничить вас заправкой любого топлива, но двигатель будет работать правильно только с указанным топливом, поэтому лучше следовать его требованиям. В требованиях говорится, что он принимает, как и другие автомобили того же жанра ABC
, стандартный набор топлива.
В объектно-ориентированном представлении топливо для жанра ABC
не должно объявляться как класс, поскольку там нет конкретного топлива для конкретного жанра автомобиля. Несмотря на то, что ваш автомобиль может принимать абстрактный класс «Fuel» или «AutularFuel», вы должны помнить, что только некоторые из существующих автомобильных топлив соответствуют техническим требованиям, которые соответствуют требованиям, изложенным в руководстве по эксплуатации вашего автомобиля. Короче говоря, они должны реализовать интерфейс ABCGenreFuel
, который "... позволяет отдельным и иногда несовместимым элементам эффективно координировать" .
Добавление
Кроме того, я думаю, вы должны иметь в виду значение термина «класс», который (с того же сайта, о котором упоминалось ранее):
Класс:
Количество лиц или предметов, рассматриваемых как составляющие группу по причине общих признаков, характеристик, качеств или черт характера; вид;
Таким образом, класс (или абстрактный класс) должен представлять не только общие атрибуты (например, интерфейс), но и какую-то группу с общими атрибутами. Интерфейс не должен представлять вид. Он должен представлять общие атрибуты. Таким образом, я думаю, что классы и абстрактные классы могут использоваться для представления вещей, которые не должны часто менять свои аспекты, например, человек, являющийся млекопитающим, потому что он представляет некоторые виды. Виды не должны менять себя так часто.