Апстрактна класа и интерфејс се користе за постизање апстракције где можемо декларисати апстрактне методе. Апстрактна класа и интерфејс се не могу инстанцирати.
преузмите иоутубе видео записе на влц
Али постоје многе разлике између апстрактне класе и интерфејса које су дате у наставку.
Апстрактна класа | Интерфејс |
---|---|
1) Апстрактна класа може имају апстрактне и неапстрактне методе. | Интерфејс може имати само апстрактно методе. Од Јава 8, може имати подразумеване и статичке методе такође. |
2) Апстрактни час не подржава вишеструко наслеђивање . | Интерфејс подржава вишеструко наслеђивање . |
3) Апстрактни час може имати коначне, не-коначне, статичке и нестатичке променљиве . | Интерфејс има само статичке и коначне променљиве . |
4) Апстрактни час може да обезбеди имплементацију интерфејса . | Интерфејс не може да обезбеди имплементацију апстрактне класе . |
5) Тхе апстрактна кључна реч се користи за декларисање апстрактне класе. | Тхе кључна реч интерфејса се користи за декларисање интерфејса. |
6) Ан апстрактна класа може проширити другу Јава класу и имплементирати више Јава интерфејса. | Ан интерфејс може проширити само други Јава интерфејс. |
7) Ан апстрактна класа може се проширити помоћу кључне речи 'ектендс'. | Ан интерфејс може се имплементирати помоћу кључне речи 'имплементи'. |
8) На Јаву апстрактна класа може имати чланове класе попут приватних, заштићених итд. | Чланови Јава интерфејса су подразумевано јавни. |
9) Пример: јавна апстрактна класа Схапе{ јавни апстрактни воид драв(); } | Пример: јавни интерфејс Дравабле{ воид драв(); } |
Једноставно, апстрактна класа постиже делимичну апстракцију (0 до 100%), док интерфејс постиже потпуну апстракцију (100%).
Пример апстрактне класе и интерфејса у Јави
Хајде да видимо једноставан пример где користимо и интерфејс и апстрактну класу.
нумпи месхгрид
//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