Отже ... я робив невеликі дослідження. Далі йде невеликий урок історії для зацікавлених. :) Пропустіть до висновку внизу, якщо вас цікавить лише відповідь.
1967 :
SIMULA 67 , перша об'єктно-орієнтована мова програмування, визначає ключові слова як клас , об'єкт , виклик за посиланням , виклик за значенням та віртуальний .
Система успадкування SIMULA спочатку була відома іншою назвою, конкатенацією (а пізніше відомою як префіксація ), посилаючись на той факт, що код супертипів був скопійований і «з'єднаний» з кодом підтипів. Пізніше з'явилася інша форма системи успадкування - делегування , де виклики делегуються відповідно до правильного типу.
Віртуальна, швидше за все, відноситься до процесу, який потрібно виконати, щоб відправити виклик до правильної реалізації за допомогою віртуальної таблиці методів . Це віртуально порівняно з фіксованою / конкретною реалізацією.
1971 :
Ніклаус Вірт пише про концепцію, визначену як поетапне вдосконалення . В основному пояснюється, як розділити програму на часткові рішення, на які можна розширити.
1974 :
Це найбільш ранній документ я знайшов якісь монети терміна абстрактних типів даних від Лиска .
Абстрактний тип даних визначає клас абстрактних об'єктів, який повністю характеризується операціями, доступними для цих об'єктів. Це означає, що абстрактний тип можна визначити, визначивши характеризуючі операції для цього типу. Коли програміст використовує абстрактний об'єкт даних, він переймається лише поведінкою, яку демонструє цей об'єкт, але не будь-якими деталями того, як така поведінка досягається за допомогою реалізації.
У цьому документі також визначений кластер операцій, який, здається, визначає те, що ми зараз знаємо як інтерфейс .
Цікава наукова термінологія (стаття від 1996 р.):
Спадкування : механізм більш низького рівня, за допомогою якого об'єкти або класи можуть обмінюватися поведінкою або даними.
Підтипізація : виражає концептуальну спеціалізацію. Конкретна форма успадкування, яка також називається інтерфейс спадкування .
Принципи абстракції : Процес організації наших знань про область застосування в ієрархічному ранжируванні впорядкованих абстракцій, щоб отримати краще розуміння проблем, що стосуються.
Частково реалізовані абстракції : абстракції, визначення яких цілеспрямовано залишено неповними.
Анотаційні класи : Конкретний термін для частково реалізованого класу в об'єктно-орієнтованих системах.
Нестримне успадкування : дозволяє переглядати (або навіть видаляти) операції в підкласах.
Суворе успадкування : Послідовно сумісне спадкування.
Висновок :
Абстрактний клас - найзагальніший термін, що використовується в об'єктно-орієнтованих системах. Здається, чисті та нечисті віртуальні функції походять лише від C ++. Наприклад, це інтерв'ю зі «Струструпом» робить здається, що він вигадав умови. У наукових працях використовується більш загальна термінологія.
Віртуальний походить від SIMULA, що спричиняє широке поширення використання, але це не загальний термін. У ньому вже визначені деталі реалізації. Говорити з точки зору видів спадкування є більш доцільним. Невіртуальний за замовчуванням відповідає суворому успадкуванню за замовчуванням, тоді як віртуальному за замовчуванням відповідає нестримне успадкування .
Хтось зацікавлений у налаштуванні вікіпедії ? :)