logo

Skirtumas tarp abstrakčios klasės ir sąsajos

Abstrakčioji klasė ir sąsaja naudojamos abstrakcijai pasiekti, kur galime deklaruoti abstrakčius metodus. Abstrakti klasė ir sąsaja negali būti kartojamos.

Tačiau yra daug skirtumų tarp abstrakčios klasės ir sąsajos, pateiktos žemiau.

Abstrakti klasėSąsaja
1) Abstrakti klasė gali turėti abstrakčių ir neabstrakčių metodus.Sąsaja gali turėti tik abstraktus metodus. Nuo Java 8 ji gali turėti numatytieji ir statiniai metodai taip pat.
2) Abstrakti klasė nepalaiko daugybinio paveldėjimo .Sąsaja palaiko daugialypį paveldėjimą .
3) Abstrakti klasė gali turėti galutinius, negalutinius, statinius ir nestatinius kintamuosius .Sąsaja turi tik statiniai ir galutiniai kintamieji .
4) Abstrakti klasė gali užtikrinti sąsajos įgyvendinimą .Sąsaja negali pateikti abstrakčios klasės įgyvendinimo .
5) abstraktus raktinis žodis naudojamas abstrakčiai klasei deklaruoti.The sąsajos raktinis žodis naudojamas sąsajai deklaruoti.
6) An abstrakti klasė gali išplėsti kitą Java klasę ir įdiegti kelias Java sąsajas.An sąsaja gali išplėsti tik kitą Java sąsają.
7) An abstrakti klasė gali būti išplėstas naudojant raktinį žodį „pratęsia“.An sąsaja gali būti įgyvendinta naudojant raktinį žodį „įgyvendina“.
8) Į Java abstrakti klasė gali turėti klasės narių, pvz., privačių, apsaugotų ir kt.Pagal numatytuosius nustatymus „Java“ sąsajos nariai yra vieši.
9) Pavyzdys:
viešoji abstrakčioji klasė Shape{
viešas abstraktus void draw();
}
Pavyzdys:
braižoma viešoji sąsaja{
negaliojantis piešimas ();
}

Tiesiog abstrakčioji klasė pasiekia dalinę abstrakciją (nuo 0 iki 100%), o sąsaja pasiekia visišką abstrakciją (100%).

Abstrakčios klasės ir sąsajos pavyzdys „Java“.

Pažiūrėkime paprastą pavyzdį, kai naudojame sąsają ir abstrakčią klasę.

 //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šbandykite dabar

Išvestis:

 I am a I am b I am c I am d