logo

Разлика између апстрактне класе и интерфејса

Апстрактна класа и интерфејс се користе за постизање апстракције где можемо декларисати апстрактне методе. Апстрактна класа и интерфејс се не могу инстанцирати.

преузмите иоутубе видео записе на влц

Али постоје многе разлике између апстрактне класе и интерфејса које су дате у наставку.

Апстрактна класаИнтерфејс
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