Ну "Абстрактний інтерфейс" - це лексична конструкція: http://en.wikipedia.org/wiki/Lexical_analysis .
Це вимагає компілятор, ви також могли написати interface
.
Ну не надто заглиблюйтесь у лексичну конструкцію мови, оскільки вони, можливо, помітили її там, щоб вирішити деяку неоднозначність компіляції, яку називають особливими випадками під час компіляції або для деякої відсталої сумісності, спробуйте зосередитись на основній лексичній конструкції.
Суть `інтерфейсу полягає у захопленні деякої абстрактної концепції (ідея / думка / мислення вищого порядку тощо), реалізація якої може відрізнятися ... тобто може бути багаторазова реалізація.
Інтерфейс - це чистий абстрактний тип даних, який представляє особливості об'єкта, який він фіксує або представляє.
Особливості можуть бути представлені простором або часом. Коли вони представлені простором (сховищем пам’яті), це означає, що ваш конкретний клас реалізує поле та метод / методи, які працюватимуть на цьому полі або за часом, а це означає, що завдання реалізації функції є суто обчислювальним (вимагає більше процесорних годин на обробку), щоб у вас виникли торги між простором та часом для реалізації функції.
Якщо ваш конкретний клас не реалізує всі функції, він знову стає абстрактним, оскільки у вас є реалізація вашої думки чи ідеї чи абстрактності, але вона не є повною, ви вказуєте її за abstract
класом.
Конкретним класом буде клас / набір класів, який повністю зафіксує абстрактність, яку ви намагаєтеся захопити класом XYZ.
Отже, Шаблон є
Interface--->Abstract class/Abstract classes(depends)-->Concrete class