logo

Разлика между абстрактен клас и интерфейс

Абстрактният клас и интерфейсът се използват за постигане на абстракция, където можем да декларираме абстрактните методи. Абстрактният клас и интерфейсът не могат да бъдат създадени.

sql сървър pivot

Но има много разлики между абстрактния клас и интерфейса, които са дадени по-долу.

Абстрактен класИнтерфейс
1) Абстрактен клас може имат абстрактни и неабстрактни методи.Интерфейсът може да има само абстрактно методи. От Java 8 може да има методи по подразбиране и статични също.
2) Абстрактен клас не поддържа множествено наследяване .Интерфейс поддържа множествено наследяване .
3) Абстрактен клас може да има крайни, неокончателни, статични и нестатични променливи .Интерфейсът има само статични и крайни променливи .
4) Абстрактен клас може да осигури внедряването на интерфейс .Интерфейс не може да осигури внедряването на абстрактен клас .
5) The абстрактна ключова дума се използва за деклариране на абстрактен клас.The ключова дума за интерфейс се използва за деклариране на интерфейс.
6) Ан абстрактен клас може да разшири друг Java клас и да реализира множество Java интерфейси.Ан интерфейс може да разшири само друг Java интерфейс.
7) Ан абстрактен клас може да се разшири с помощта на ключовата дума „разширява“.Ан интерфейс може да се приложи с помощта на ключовата дума 'implements'.
8) Към Java абстрактен клас може да има членове на класа като private, protected и т.н.Членовете на Java интерфейс са публични по подразбиране.
9) Пример:
публичен абстрактен клас Shape{
публично абстрактно празно теглене ();
}
Пример:
публичен интерфейс 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