Абстрактният клас и интерфейсът се използват за постигане на абстракция, където можем да декларираме абстрактните методи. Абстрактният клас и интерфейсът не могат да бъдат създадени.
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