logo

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

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

баш еліф

Але є багато відмінностей між абстрактним класом та інтерфейсом, які наведені нижче.

Абстрактний класІнтерфейс
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