Різниця між інтерфейсом і абстрактним класом на Java

Ключова різниця: інтерфейс або протокол - це звичайний спосіб, який дозволяє незв'язаним об'єктам спілкуватися один з одним. Вона являє собою узгоджену поведінку, що полегшує взаємодію між двома об'єктами. Абстрактний клас - це клас об'єктів, які не можуть бути створені примірниками об'єкта. Цей клас може не мати реалізації або може мати неповну реалізацію.

Java, C ++, C # - це складні мови програмування, які вимагають детального вивчення та розуміння, щоб мати можливість працювати. Існує багато різних методів, які використовують ці мови, які визначають, як буде працювати мова. Інтерфейс і абстрактний клас - це дві незрозумілі концепції, які є частиною ООП (об'єктно-орієнтованого програмування). Ці два можна використовувати окремо або разом один з одним. Ці два цілком відрізняються один від одного і використовуються в різних випадках.

Java - це мова програмування, на яку вплинула мова С. Це значною мірою породжує його синтаксис з C і C ++, однак він має менше можливостей низького рівня, ніж теж. Java - це мова програмування загального призначення, яка розроблена так, щоб мати меншу залежність від реалізації порівняно з попередніми мовами. Це одночасно, на основі класу і об'єктно-орієнтованої мови.

Java була розроблена Джеймсом Госліном у Sun Microsystems і була випущена в 1995 році. Вона була спочатку випущена як основний компонент платформи Java Sun Microsystems. З тих пір компанія Sun змінила ліцензію на більшість своїх технологій Java за ліцензією GNU General Public License. Це означає, що всі технології, ліцензовані під GNU General Public License, є відкритим кодом і загалом доступні безкоштовно. Нарешті, Sun Microsystems об'єдналася з корпорацією Oracle. З 2012 року Java стала однією з найпопулярніших мов програмування для використання. Це особливо стосується веб-додатків клієнт-сервер. Багато інших систем розробили альтернативні реалізації технологій Sun, таких як GNU Compiler for Java і GNU Classpath.

Інтерфейс або протокол є загальним способом, який дозволяє незв'язаним об'єктам спілкуватися один з одним. Вона являє собою узгоджену поведінку, що полегшує взаємодію між двома об'єктами. Інтерфейс містить ключ до різних дій, що реалізуються, і служить зв'язком між двома різними об'єктами. Якщо клас об'єктів піддається інтерфейсу, клас повинен дотримуватися поведінки, реалізованої інтерфейсом. Як правило, інтерфейси містять тільки константні декларації та сигнатури методів. Будь-який інтерфейс, який реалізує конкретний інтерфейс, повинен застосовувати всі методи, згадані в інтерфейсі, або бути оголошеними як абстрактний клас. У Java будь-який об'єкт може бути визначений як інтерфейс, якщо цей об'єкт є нульовим або містить клас, в якому він реалізує цей конкретний інтерфейс. Можна реалізувати декілька інтерфейсів для одного класу в Java за допомогою реалізації ключових слів.

Абстрактний клас - це клас об'єктів, які не можуть бути створені примірниками об'єкта. Цей клас може не мати реалізації або може мати неповну реалізацію. Він також може мати абстрактні методи або властивості, які поділяються всіма підкласами. У деяких мовах програмування абстрактні типи без реалізації називаються інтерфейсами. В Java абстрактний тип можна створити за допомогою ключового слова 'abstract' у визначенні класу. Мета - мати абстрактний клас для розміщення всіх методів, які не реалізовані в абстрактному класі, і залишити його підкласу, щоб визначити, як реалізувати ці класи. Якщо клас має єдиний абстрактний метод, клас повинен бути оголошений як абстрактний клас, хоча для оголошення абстракції класу не потрібно мати принаймні один метод.

Malliktalksjava.in перелічує основні відмінності між інтерфейсом і абстрактними як:

  • Абстрактний клас має конструктор, але інтерфейс не має.
  • Абстрактні класи можуть мати реалізації для деяких її членів (Methods), але інтерфейс не може мати реалізації для будь-якого з його членів.
  • Абстрактні класи повинні мати підкласи, які будуть марними.
  • Інтерфейси повинні мати реалізації іншими класами, які будуть марними
  • Тільки інтерфейс може розширити інший інтерфейс, але будь-який клас може розширити абстрактний клас.
  • Всі змінні в інтерфейсах є остаточними за замовчуванням
  • Інтерфейси забезпечують форму множинного успадкування. Клас може поширюватися тільки на один інший клас.
  • Інтерфейси обмежені публічними методами і константами без реалізації. Абстрактні класи можуть мати часткову реалізацію, захищені частини, статичні методи і т.д.
  • Клас може реалізовувати кілька інтерфейсів. Але у випадку абстрактного класу клас може поширюватися лише на один абстрактний клас.
  • Інтерфейси є повільними, тому що вимагає додаткової спрямованості, щоб знайти відповідний метод у фактичному класі. Анотація класів швидко.
  • Модифікатор доступності (відкритий / приватний / внутрішній) дозволений для абстрактного класу. Інтерфейс не дозволяє модифікатор доступності
  • Абстрактний клас може містити повні або неповні методи. Інтерфейси можуть містити тільки підпис методу, але не тіло. Таким чином, абстрактний клас може реалізувати методи, але інтерфейс не може реалізувати методи.
  • Абстрактний клас може містити поля, конструктори або деструктори та властивості реалізації. Інтерфейс не може містити полів, конструкторів або деструкторів і має лише підпис властивості, але не має реалізації.
  • Різні модифікатори доступу, такі як абстрактні, захищені, внутрішні, загальнодоступні, віртуальні і т.д. корисні в абстрактних класах, але не в інтерфейсах.
  • Анотація сфери до похідного класу.
  • Інтерфейс інтерфейсу до будь-якого рівня успадкування.

Інформація для таблиці надана codeproject.com та mindprod.com

Інтерфейс

Анотація класу

Багаторазове успадкування

Клас може успадковувати кілька інтерфейсів.

Клас може успадковувати лише один абстрактний клас.

Реалізація за умовчанням

Інтерфейс не може забезпечити будь-який код, а лише підпис.

Анотація класу може забезпечити повний код за замовчуванням та / або лише деталі, які необхідно перевизначити.

Модифікатори доступу

Інтерфейс не може мати модифікаторів доступу для підсистем, функцій, властивостей тощо.

Абстрактний клас може містити модифікатори доступу для subs, функцій, властивостей.

Core і Peripheral

Інтерфейси використовуються для визначення периферійних можливостей класу. Іншими словами, і людський, і транспортний засіб можуть успадковуватися від інтерфейсу, який можна змінювати.

Абстрактний клас визначає основну ідентифікацію класу, і він використовується для об'єктів одного типу.

Гомогенність

Якщо різні реалізації тільки поділяють підписи методу, то краще використовувати інтерфейси.

Якщо різні реалізації мають однаковий вид і використовують загальну поведінку або стан, то абстрактний клас краще використовувати.

Швидкість

Потрібно більше часу для пошуку фактичного методу у відповідних класах.

Швидко

Додавання функціональності

Якщо до інтерфейсу додати новий метод, то треба відстежити всі реалізації інтерфейсу і визначити реалізацію для нового методу.

Якщо додати абстрактний клас до нового методу, то ми маємо можливість надавати реалізацію за замовчуванням, і тому весь існуючий код може працювати належним чином.

Поля і константи

У інтерфейсах не можуть бути визначені поля.

У абстрактному класі можуть бути визначені поля і константи.

Строгість

Постійні декларації в інтерфейсі вважаються загальнодоступними статичними фінальними.

Спільний код може бути доданий до абстрактного класу.

Константи

Тільки статичні кінцеві константи можуть використовувати їх без кваліфікації в класах, що реалізують інтерфейс.

Можливі як екземпляри, так і статичні константи. Можна також обчислити константи як статичний, так і екземплярний код.

Зручність третіх осіб

Реалізація інтерфейсу може бути додана до будь-якого існуючого класу третьої сторони.

Клас третіх сторін повинен бути переписаний лише з абстрактного класу.

це-a у порівнянні з працездатністю або можливістю

Інтерфейси часто використовуються для опису периферійних можливостей класу, а не його центральної ідентичності, наприклад, клас Автомобіля може реалізовувати інтерфейс Recyclable, який може застосовуватися до багатьох абсолютно не пов'язаних об'єктів.

Абстрактний клас визначає основну ідентичність його нащадків. Реалізовані інтерфейси перераховують загальні речі, які клас може робити, а не те, що клас є.

У контексті Java користувачі повинні зазвичай реалізовувати інтерфейс Runnable, а не розширювати Thread, тому що вони насправді не зацікавлені в наданні деяких нових функцій Thread, вони звичайно просто хочуть, щоб деякі коди мали можливість самостійно працювати. Вони хочуть створити щось, що може бути запущене в нитку, а не новий вид потоку. Аналогічна дискусія виникає, коли ви вирішили наслідувати або делегувати.

Підключати

Користувач може написати новий модуль заміни для інтерфейсу, який містить не одну пачку коду спільно з існуючими реалізаціями. Коли користувач реалізує інтерфейс, вони починаються з нуля без будь-якої реалізації за замовчуванням. Користувач повинен отримувати інструменти з інших класів; Ніщо не має інтерфейсу, окрім декількох констант. Це дає користувачеві свободу реалізувати кардинально інший внутрішній дизайн.

Користувач повинен використовувати абстрактний клас як є для кодової бази, з усіма супутнім багажем, хорошим або поганим. Автор абстрактного класу наклав структуру на користувача.

Технічне обслуговування

Якщо клієнтський код розмовляє тільки з точки зору інтерфейсу, можна легко змінити конкретну реалізацію за ним, використовуючи заводський метод.

Якщо клієнтський код розмовляє тільки в термінах абстрактного класу, можна легко змінити конкретну реалізацію за ним, використовуючи заводський метод.

Рекомендуємо

Схожі Статті

  • різниця між: Різниця між Smartwatch та Smart браслетом

    Різниця між Smartwatch та Smart браслетом

    Ключові відмінності: Smartwatches - це безкоштовні продукти, які з'єднують годинник з телефоном і дозволяють людині контролювати функції деяких телефонів безпосередньо на годиннику. Смарт-браслети включають смарт-годинники та розумні браслети, але більше у формі браслетів, ніж годинник. Технологія просунулася до того моме
  • різниця між: Різниця між HTML і HTML5

    Різниця між HTML і HTML5

    Основна відмінність: HTML означає HyperText Markup Language. Це добре відома мова розмітки, яка використовується для розробки веб-сторінок. Вона існує довгий час і зазвичай використовується в дизайні веб-сторінок. HTML5 є п'ятим переглядом стандарту HTML. Основними цілями HTML5 було вдосконалення мови з підтримкою новітніх мультимедіа. HTML5 спрямована на вир
  • різниця між: Різниця між кров'ю і плазмою

    Різниця між кров'ю і плазмою

    Ключова різниця: Кров - це тілесна рідина, яка служить різним цілям в тілі. Вона є частиною системи кровообігу тіла, центром якої є серце. Кров складається з еритроцитів, лейкоцитів і тромбоцитів, всі з яких плавають у плазмі крові. У найважливіших термінах плазма - це те, що залишилося від крові після видалення червоних кров'яних клітин, лейкоцитів і тромбоцитів. Кров - це тілесна рідина, яка служить різним ці
  • різниця між: Різниця між однодольні та дводольні

    Різниця між однодольні та дводольні

    Ключові відмінності: однодольні та дводольні обидва типи квітучих рослин. Основна відмінність між однодольними і дводольними полягає в тому, що монокоти мають тільки одну сім'ядоль, або ембріональний лист, тоді як дводольні у двох. Монокоти і дікоти - дві підгрупи покритосеменних. Ангіосперми - це не що інше, як квітучі рослини, тобто земляні рослини, які розмножуються через насіння в квітах і фруктах. Всі покритонасінн
  • різниця між: Різниця між Lenovo Thinkpad Twist і Dell XPS 10 Tablet

    Різниця між Lenovo Thinkpad Twist і Dell XPS 10 Tablet

    Ключова відмінність: Унікальний аспект Lenovo Thinkpad Twist полягає в тому, що він є конвертованим ноутбуком з можливістю крутити його екран і відкидати назад. Це дозволяє пристрою зайняти чотири режими проектування. Це включає в себе режим ноутбука, планшетний режим, режим наметів і, нарешті, режим Stand. У Lenovo Thinkpad Twist є 12, 5-дюймовий HD IPS-дисплей з сенсорним сенс
  • різниця між: Різниця між економікою та компактними автомобілями

    Різниця між економікою та компактними автомобілями

    Ключова різниця: Економічні автомобілі в основному сегмент, який включає в себе автомобілі, які є доступними для широкої громадськості; їх дешевше купити і дешевше підтримувати. Компактні автомобілі - це маленькі автомобілі, які пропонують різні функції; однак тільки тому, що вони малі, це не означає, що вони дешеві. Є бага
  • різниця між: Різниця між TAKS і STAAR

    Різниця між TAKS і STAAR

    Ключова відмінність: TAKS був стандартизованим тестом, який проводився в школах Техасу для класів 3-8 і 9-11 класів, щоб оцінити навички читання, письма, математики, науки та соціальних досліджень студентів. З 2012 по 2014 рік STAAR замінив TAKS як стандартизований тест штату. Більшість штатів у Сполучених Штатах мають державні стандартизовані тести, які знаходяться
  • різниця між: Різниця між кров'ю і лімфою

    Різниця між кров'ю і лімфою

    Ключова різниця: Кров, яка є частиною системи кровообігу, є тілесною рідиною, яка дозволяє циркуляцію кисню по всьому тілу. Лімфа - це безбарвна рідина, яка є частиною лімфатичної системи, що сприяє боротьбі з інфекціями та видаленням відходів. Людський організм дуже складний. Вона складається з різних систем, включаючи органи, м'язи, систему кровообігу, лімфатичну систему та багато інших. Дві з багатьох речей, які роблять тіло справно
  • різниця між: Різниця між помилкою і галюцинацією

    Різниця між помилкою і галюцинацією

    Ключова різниця: помилка - це умова, коли людина дотримується переконання, навіть якщо сильні докази свідчать про інше. Галюцинації - це сприйняття, яке відбувається за відсутності стимулу. Вони є уявленнями, які відбуваються у свідомому стані за відсутності зовнішніх стимулів, і вони мають властивості реального сприйняття, а це означає, що в

Вибір Редакції

Різниця між антивірусними та брандмауерними програмами

Ключова різниця: Антивірусне програмне забезпечення або антивірусне програмне забезпечення - це програмне забезпечення, яке використовується для запобігання потраплянню вірусів до комп'ютерної системи та зараження файлів. Багато антивірусні програми в даний час також усувають різні види шкідливих програм на додаток до вірусів. Програмне забезпечення брандмауера - це програмне забезпечення, яке контролює вхідн