Абстрактний клас проти спадкування
Абстрактний клас та Спадщина - це дві важливі об'єктно-орієнтовані концепції, що зустрічаються у багатьох об'єктно-орієнтованих мовах програмування, таких як Java. Абстрактний клас можна розглядати як абстрактну версію звичайного (конкретного) класу, тоді як Успадкування дозволяє новим класам розширювати інші класи. Абстрактний клас - це клас, який не можна ініціалізувати, але його можна продовжити. Отже, абстрактні класи мають сенс мати лише тоді, коли мова програмування підтримує успадкування. У Java класи Абстракція оголошуються за допомогою ключового слова Анотація, тоді як ключове слово Extends використовується для успадкування від (супер) класу.
Що таке абстрактний клас?
Як правило, абстрактні класи, також відомі як абстрактні базові класи (ABC), неможливо створити екземпляр (екземпляр цього класу неможливо створити). Отже, абстрактні класи мають сенс мати лише тоді, коли мова програмування підтримує успадкування (здатність створювати підкласи з розширення класу). Абстрактні класи зазвичай являють собою абстрактне поняття або сутність з частковою або відсутнім виконанням. Тому абстрактні класи діють як батьківські класи, з яких походять дочірні класи, так що дочірній клас поділиться неповними особливостями батьківського класу, а функція для їх завершення може бути додана.
Анотаційні заняття можуть містити абстрактні методи. Підкласи, що розширюють абстрактний клас, можуть реалізувати ці (успадковані) абстрактні методи. Якщо дочірній клас реалізує всі такі абстрактні методи, це конкретний клас. Але якщо цього не відбувається, дочірній клас також стає абстрактним класом. Все це означає, що коли програміст призначить клас абстрактним, вона каже, що клас буде неповним і в ньому будуть елементи, які потрібно заповнити спадковими підкласами. Це хороший спосіб створити контракт між двома програмістами, який спрощує завдання з розробки програмного забезпечення. Програмісту, який пише код для успадкування, потрібно точно слідувати визначенням методу (але, звичайно, він може мати власну реалізацію).
Що таке спадщина?
Спадкування - це об'єктно-орієнтована концепція, яка дозволяє новим класам розширювати інші класи. Ключове слово Extends використовується для реалізації концепції успадкування в мові програмування Java. Спадкування по суті забезпечує повторне використання коду, дозволяючи розширювати властивості та поведінку існуючого класу заново визначеним класом. Коли новий підклас (або похідний клас) розширює суперклас (або батьківський клас), цей підклас успадкує всі атрибути та методи суперкласу. Підклас може необов'язково змінювати поведінку (надавати нову або розширену функціональність методам), успадковану від батьківського класу. Зазвичай підклас не може поширювати кілька суперкласів (наприклад, на Java). Тому ви не можете використовувати розширення для багаторазового успадкування. Для того, щоб мати декілька успадкованих, потрібно використовувати інтерфейси.
Яка різниця між абстрактним класом і спадщиною?
Абстрактні класи зазвичай являють собою абстрактне поняття або сутність з частковою або відсутнім виконанням. Спадкування дозволяє новим класам розширювати інші класи. Оскільки класи "Анотація" не можуть бути ініціативними, вам потрібно використовувати поняття успадкування, щоб використовувати абстрактні класи. В іншому випадку клас "Анотація" не має ніякої користі. Абстрактні класи можуть містити абстрактні методи, і коли клас розширений, усі методи (Анотація та конкретність) успадковуються. Спадковий клас може реалізувати будь-який або всі методи. Якщо всі абстрактні методи не реалізовані, то цей клас також стає абстрактним класом. Клас не може успадковувати більше ніж один клас Анотація (це не якість абстрактних класів як такої, а скоріше обмеження успадкування).