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