Абстрактний клас та інтерфейс використовуються для досягнення абстракції, де ми можемо оголосити абстрактні методи. Абстрактний клас та інтерфейс не можуть бути створені.
баш еліф
Але є багато відмінностей між абстрактним класом та інтерфейсом, які наведені нижче.
Абстрактний клас | Інтерфейс |
---|---|
1) Абстрактний клас може мають абстрактні і неабстрактні методи. | Інтерфейс може мати тільки абстрактні методи. Починаючи з Java 8, це може бути за замовчуванням і статичні методи також. |
2) Абстрактний клас не підтримує множинне успадкування . | Інтерфейс підтримує множинне успадкування . |
3) Абстрактний клас може мати кінцеві, нефінальні, статичні та нестатичні змінні . | Інтерфейс має лише статичні та кінцеві змінні . |
4) Абстрактний клас може забезпечити реалізацію інтерфейсу . | Інтерфейс не може забезпечити реалізацію абстрактного класу . |
5) The абстрактне ключове слово використовується для оголошення абстрактного класу. | The ключове слово інтерфейсу використовується для оголошення інтерфейсу. |
6) Ан абстрактний клас може розширити інший клас Java і реалізувати кілька інтерфейсів Java. | Ан інтерфейс може розширювати лише інший інтерфейс Java. |
7) Ан абстрактний клас можна розширити за допомогою ключового слова 'розширює'. | Ан інтерфейс можна реалізувати за допомогою ключового слова 'реалізує'. |
8) До Java абстрактний клас може мати членів класу, наприклад private, protected тощо. | Члени інтерфейсу Java є публічними за замовчуванням. |
9) приклад: публічний абстрактний клас Shape{ public abstract void draw(); } | приклад: публічний інтерфейс Drawable{ void draw(); } |
Простіше кажучи, абстрактний клас досягає часткової абстракції (від 0 до 100%), тоді як інтерфейс досягає повної абстракції (100%).
Приклад абстрактного класу та інтерфейсу в Java
Давайте розглянемо простий приклад, де ми використовуємо як інтерфейс, так і абстрактний клас.
//Creating interface that has 4 methods interface A{ void a();//bydefault, public and abstract void b(); void c(); void d(); } //Creating abstract class that provides the implementation of one method of A interface abstract class B implements A{ public void c(){System.out.println('I am C');} } //Creating subclass of abstract class, now we need to provide the implementation of rest of the methods class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } //Creating a test class that calls the methods of A interface class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }}Перевірте зараз
Вихід:
I am a I am b I am c I am d