Razlike između klase apstrakcije i sučelja na Javi

Sažetak Klasa vs sučelje na Javi

Da bismo razumjeli razlike između apstraktne klase i sučelja u Javi, važno je prije svega razumjeti svako od njih neovisno. Sažetak klase u Javi koristi se u deklariranju potklasa s skupom zajedničkih karakteristika. Uobičajena upotreba apstraktne klase je super klasa drugih klasa što joj, zapravo, omogućava proširenje apstraktne klase. U deklaraciji apstraktne klase upotrebljava se apstraktna ključna riječ. Kao i svaka druga klasa, apstraktna klasa ima polja koja opisuju metode i karakteristike koje klasa može izvoditi. Klasiranjem apstraktne klase klasa se ne može pokrenuti

Java sučelje može se izjednačiti s protokolom. Predstavlja unaprijed dogovoreno ponašanje koje omogućava lakšu interakciju nepovezanih objekata. Ovisno o korisniku, sučelje drži ključ za različite radnje koje se provode. Sučelje, dakle, služi kao veza između proizvođača i potrošača. Sučelja u Javi su, dakle, skupina metoda koja sadrži prazna tijela koja mogu imati konstantne deklaracije. U izlaganju klase Java sučelju, to znači da se ponašanje koje očekuje u klasi primjena svih metoda sučelja.


Razlike

Najprije, apstraktna klasa dopušta polja koja nisu statična ili konačna za razliku od statičkih i završnih polja koja se koriste u sučeljima. Sučelja ne mogu upotrebljavati nijedan kôd za implementaciju, a može postojati i kôd za implementaciju koji se koristi u apstraktnoj klasi. Provedbeni kodovi izvedeni u apstraktnoj klasi mogu imati nekoliko ili svih implementiranih metoda. Prema zadanim postavkama, sve metode sučelja su "apstraktne".

Vidljivost je moguća i za metode ili članove apstraktne klase koja može varirati kao javna, zaštićena, privatna ili nikakva. S druge strane vidljivost sučelja može se postaviti samo na jedan vid vidljivosti koji je "javni".

Apstraktna klasa automatski će naslijediti objektnu klasu. To, naime, znači da su uključene metode poput klona () i jednake (). U sučelju nije moguće nasljeđivanje klase objekta. Slijedom toga, apstraktna klasa može imati konstruktor, ali sučelje ne može imati.

Sučelje u Javi također ima vrlo važnu funkciju s implementacijom višestrukih nasljeđivanja jer klasa može imati samo jednu super klasu. Iako može biti prisutna samo jedna super klasa, ona se može implementirati u bilo koji broj sučelja. Nije moguće imati više nasljeđivanja u apstraktnom razredu.

U izvedbi, sučelja imaju tendenciju sporijeg u implementaciji, za razliku od apstraktne klase, uglavnom zbog dodatnog smjera pronalaženja odgovarajuće metode u klasi. Razlika je, međutim, postala sporija zbog modernih Java-ovih virtualnih strojeva koji se neprestano nadograđuju.

Dodavanje metode u sučelje zahtijeva da pronađete sve klase implementacije koje implementiraju određeno sučelje. Alternativno, možete proširiti sučelje kako biste mu omogućili dodatne metode. Ako se bavite apstraktnom klasom, sve što je potrebno je dodati zadanu implementaciju metode i kôd i dalje funkcionira. Koliko postoje razlike između apstraktnih klasa i sučelja, važno je napomenuti da oni nisu suparnici, ali razlike ovdje spomenute služe kao nadopunjavanje jedna drugu.  

Sažetak

  1. Apstraktna polja klase nisu statična ili konačna za razliku od sučelja koje ima statičke i završne tablice.

  2. Nijedan se kôd za implementaciju ne može koristiti u sučeljima, dok se može koristiti u apstraktnoj klasi.

  3. Vidljivost sučelja može biti javna dok apstraktna vidljivost klase može varirati.

  4. Apstraktna klasa automatski će naslijediti objektnu klasu, ali u sučelju to nije moguće.

  5. Sažetak klase je brži od sučelja u implementaciji.