Razlike između klase i sučelja sažetka u Javi

Anonim

Sažetak Klasa vs sučelja u Javi

Da biste razumjeli razlike između apstraktne klase i sučelja Java, važno je, prije svega, razumjeti svaku od njih samostalno. Sažetak klase u Java koristi se u deklaraciji podrazreda s skupom zajedničkih karakteristika. Uobičajena upotreba apstraktnog razreda je super klasa drugih klasa koja, u stvari, omogućuje proširenje apstraktne klase. U deklaraciji apstraktnog razreda koristi se apstraktna ključna riječ. Baš kao i svaka druga klasa, apstraktna klasa ima polja koja opisuju metode i karakteristike koje klasa može izvesti. Pukom deklaracijom apstraktnog razreda, klasa se ne može pokrenuti

Java sučelje može se izjednačiti s protokolom. Ona predstavlja unaprijed i dogovoreno ponašanje koje omogućuje olakšavanje interakcije 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 koje sadrže prazna tijela koja mogu imati stalne deklaracije. U izlaganju klase Java sučelju to znači da se ponašanje očekuje od klase implementacija svih metoda sučelja.

Razlike

Prije svega, apstraktni razred dopušta polja koja nisu statična ili konačna za razliku od statičnih i završnih polja koja se koriste u sučeljima. Sučelja ne mogu imati nikakav implementacijski kôd koji se koristi u njima, a može postojati i kôd implementacije koji se koristi u apstraktnom razredu. Provedbeni kodovi izvedeni u abstraktnom razredu mogu imati nekoliko ili sve implementirane metode. Prema zadanim postavkama sve su metode sučelja "sažetak".

Vidljivost je također moguća za metode ili članove apstraktne klase koji se mogu razlikovati, kao što su javni, zaštićeni, privatni ili nikakvi. S druge strane, vidljivost sučelja može biti unaprijed postavljena samo na jedan vid vidljivosti koji je "javan"."

Sažetak klasa automatski će naslijediti klasu objekta. To, zapravo, znači da su uključene metode kao što su klon () i jednaki (). U sučelju nije moguće nasljedstvo klase objekta. Nakon toga, abstraktna klasa ima sposobnost da ima konstruktora, ali sučelje to ne može imati.

Sučelje u Java također ima vrlo važnu ulogu u implementaciji višestrukih nasljeda 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 kojem broju sučelja. Nije moguće imati više nasljedstva u apstraktnoj klasi.

U izvedbi, sučelja imaju tendenciju da budu sporiji u implementaciji nasuprot apstraktnoj klasi uglavnom zbog dodatnog smjera pronalaženja odgovarajuće metode u klasi. Razlika je, međutim, postala sporiji zbog modernih Java virtualnih strojeva koji se stalno nadograđuju.

Dodavanje metode u sučelju zahtijeva da pratite sve provodeće klase koje implementiraju određeno sučelje. Alternativno, možete proširiti sučelje kako biste omogućili da imaju dodatne metode. Ako se slučajno bavite sažetom klasom, potrebno je dodati zadanu implementaciju metode i kôd nastavlja funkcionirati. Budući da postoje razlike između apstraktnih klasa i sučelja, važno je napomenuti da oni nisu suparnici, ali ovdje navedene razlike služe za međusobno nadopunjavanje.

Sažetak

  1. Polja klase sažetka nisu statična ili konačna za razliku od sučelja koja ima statične i konačne tablice.

  2. Nijedan implementacijski kod ne može se koristiti u sučeljima dok se može koristiti u apstraktnoj klasi.

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

  4. Sažetak klasa automatski će naslijediti objektnu klasu, ali nije moguće u sučelju.

  5. Sažetak klasa je brži od sučelja u provedbi.