Термин «абстрактный» может означать целую кучу разных вещей, в зависимости от контекста.
Два наиболее распространенных использования «абстрактного» относятся к объектно-ориентированному программированию.Метод называется «абстрактный» (или, на языке C ++ - «чисто виртуальный»), если метод не имеет реализации.Цель абстрактного метода состоит в том, чтобы указать, что классы, которые наследуются от данного класса, будут иметь метод с заданной сигнатурой, но для этого метода нет разумного поведения по умолчанию.Типичным примером в иерархии классов фигур является то, что базовый класс фигур может иметь абстрактный метод, который рисует фигуру на экране.Нет хорошего поведения по умолчанию для рисования "фигуры" - какая это форма?- но любая отдельная фигура будет иметь конкретную реализацию этой функции.
Связанный термин - это «абстрактный класс», который представляет собой класс, содержащий абстрактный метод.Поскольку класс содержит этот абстрактный метод, вы не можете иметь конкретный объект этого типа класса.В противном случае, если вы попытаетесь вызвать абстрактный метод, вы обнаружите, что с ним не было связано никакой реализации.
В совершенно ином контексте слово «абстрактный» иногда появляется в термине «абстрактные данные».тип ", который является термином, используемым для описания объекта, поддерживающего некоторый набор математических операций, без обязательного объяснения того, как эти операции реализованы.Например, «стек», «очередь» и «список» - все это абстрактные типы данных, поскольку они описывают, какое поведение ожидается от объекта данного типа без реализации (например, динамический массив? Связанный список? Хэш-таблица?)
Термин «абстрактный» также встречается в слове «абстракция», что представляет собой некоторое упрощение сложной системы в нечто более управляемое.Например, сетевая маршрутизация обычно разбивается на разное количество «уровней», каждый из которых отвечает за обработку некоторой части сквозного взаимодействия.Каждый слой выполняет определенную задачу и должен принимать входные данные и создавать выходные данные в заранее определенном порядке.Это позволяет программистам, работающим на одном слое, обрабатывать все остальные слои как «черные ящики», которые волшебным образом выполняют свою работу, поскольку при условии, что вы вводите слой в правильной форме или читаете вывод какого-либо слоя определенным образом, выне нужно беспокоиться о деталях работы этого слоя.
Надеюсь, это поможет!