Razlika između klase apstrakcije i sučelja u Javi

Sažetak klase i sučelja primarno se koriste za apstrakciju, no vrlo su različiti jedni od drugih. Oboje su temeljni dio Jave, ali imaju vlastite aplikacije. Iako su oba termina međusobno sinonim, ne mogu se međusobno koristiti.

Postoje značajne razlike između to dvoje. Iako je metoda sučelja prema zadanim postavkama apstraktna, sažetak može sadržavati i apstraktne i ne-apstraktne metode. Pa, budući da je Java 8, sučelja također imaju implementacije metoda i mogu imati statičke i zadane metode u Javi. Proučimo detaljno razliku između to dvoje.

Što je apstraktna klasa na Javi?

Apstraktna klasa u Javi je klasa koja se proglašava apstraktnom - može ili ne mora sadržavati apstraktne metode. Prilično je slično Java sučelju, osim činjenice da može sadržavati zadanu implementaciju metode. Kao i kod objektno orijentiranog programiranja, apstrakcija u Javi postiže se pomoću apstraktnih klasa i sučelja. U Javi apstrakcija znači skrivanje nebitnih detalja od korisnika kako bi se usredotočili samo na bitne detalje kako bi se povećala učinkovitost, a time smanjila složenost. Ključna riječ "sažetak" koristi se za stvaranje apstraktne klase neposredno prije ključne riječi klase u deklaraciji klase.

Apstraktna klasa može ili ne mora sadržavati metode apstrakcije (metode bez tijela), ali ako klasa ima barem jednu metodu apstrakcije, mora se proglasiti apstraktnom. No, ne-apstraktne metode mogu se koristiti i u apstraktnoj klasi, ali samo za provedbu zadanog ponašanja. Metode u apstraktnoj klasi mogu imati modifikatore pristupa poput privatnih, javnih, statičkih i zaštićenih, ovisno o razini vidljivosti. Sažetak klase ne može biti primjeren i ne pruža 100-postotnu apstrakciju zbog činjenice da može imati konkretnu metodu.

Što je sučelje?

Iako sučelje izgleda kao klasa, to nije. Kako Java ne podržava više nasljeđivanja, sučelje je ponekad idealno za osiguravanje baze hijerarhije klase. Sučelje je više nacrt klase koja se također koristi za postizanje apstrakcije u Javi. Sadrži apstraktne metode i statičke konstante. Jednostavno rečeno, sučelje je skup apstraktnih metoda koje se koriste za određivanje ponašanja koje klasa mora implementirati. Za razliku od apstraktne klase, sučelje pruža potpunu apstrakciju u Javi. Može imati i metode i varijable poput klase, međutim metode deklarirane u sučelju su prema zadanim postavkama apstraktne.

Razlika između klase apstrakcije i sučelja u Javi

  1. "Višestruko nasljeđivanje" apstraktne klase i sučelja na Javi - Unatoč činjenici da se apstraktna klasa i sučelje primarno koriste za apstrakciju, oni se međusobno prilično razlikuju. Dok je apstraktna klasa klasa, sučelje je sučelje. To znači da dok sučelje može proširiti samo drugo Java sučelje, apstraktna klasa može implementirati više nasljeđivanja u Javi. Pa, Java ne podržava više nasljeđivanja, ali može implementirati više nasljeđivanja u Javi.
  2. "Vrsta metode" apstraktne klase i sučelja na Javi - Druga velika razlika između ove dvije je da, dok sučelje može imati samo apstraktne metode, apstraktna klasa može imati i apstraktne i ne-apstraktne metode. Međutim, od Java 8 sučelje može imati i zadane i statičke metode.
  3. "Pristupni modifikatori" apstraktne klase i sučelja na Javi - Apstraktna klasa može imati javne, privatne i zaštićene modifikatore pristupa, međutim metode sučelja implicitno su javne i apstraktne. Ne možete koristiti bilo koji drugi modifikator pristupa s metodama sučelja. ".
  4. "Implementacija" apstraktne klase i sučelja u Javi - Apstraktna klasa može osigurati implementaciju sučelja. Sučelje, s druge strane, ne može osigurati primjenu apstraktne klase.
  5. "Ključna riječ" apstraktne klase i sučelja na Javi- Iako se ključna riječ "apstrakt" upotrebljava za proglašavanje apstraktne metode klase apstraktnom, međutim, sučelja su potpuno drugačija priča; mogu imati samo javne, statičke konačne konstante i deklaracije metoda.
  6. "Korištenje" apstraktnih klasa i sučelja na Javi - Iako je sučelje idealno za deklaraciju tipa, apstraktna klasa je najprikladnija za ponovnu upotrebu koda i perspektivu evolucije. Sučelje izgleda kao klasa, ali nije klasa.
  7. "Pouzdanost" apstraktne klase i sučelja na Javi- Još jedna velika razlika između apstraktne klase i sučelja je ta što je prva malo brža od druge jer je pretraživanje obično uključeno u sučelje prije nego što se na Javi pozove bilo koja poništena metoda.
  8. "Finalne varijable" apstraktne klase i sučelja na Javi - Promjenjive varijable deklarirane u sučelju su zadano zadane, dok apstraktna klasa može ili ne mora sadržavati ne-konačne varijable.

Sažetak Klasa prema sučelju u Javi: Usporedna tablica

Sažetak klase Sučelje
Apstraktna ključna riječ koristi se za stvaranje apstraktne klase i može se koristiti metodama. Ključna riječ sučelja koristi se za stvaranje sučelja, ali ne može se koristiti metodama.
Razred može proširiti samo jednu apstraktnu klasu. Razred može implementirati više sučelja.
Apstraktni razred može imati i apstraktne i ne-apstraktne metode. Sučelje može imati samo apstraktne metode.
Varijable prema zadanom nisu konačne. Može sadržavati ne-konačne varijable. Varijable su zadano u zadanom sučelju.
Apstraktna klasa može osigurati implementaciju sučelja. Sučelje ne može osigurati implementaciju apstraktne klase.
Može imati metode s implementacijama. Pruža apsolutnu apstrakciju i ne može imati implementacije metoda.
Može imati javne, privatne, statičke i zaštićene modifikatore pristupa. Metode su implicitno javne i apstraktne u Java sučelju.
Ne podržava više nasljedstva. Podržava više nasljedstva.
Idealan je za ponovnu upotrebu koda i perspektivu evolucije. Idealan je za deklaraciju tipa.

Sažetak točke Sažetak klase i sučelja na Javi

I apstraktna klasa i sučelje koriste se za apstrakciju; međutim, oni imaju pravičan udio u razlikama. Glavna razlika između njih nalazi se metodama apstrakcije. Dok prve mogu ili ne moraju imati apstraktne metode, druge su implicitno apstraktne. Apstraktna klasa može imati i apstraktne i ne-apstraktne metode. S druge strane, sučelje može imati samo apstraktne metode, pa ne može imati implementaciju, što jednostavno znači da sučelje ne može imati ne-apstraktne metode. Sažetak klase ne može biti primjeren što zabranjuje stvaranje objekta. S druge strane, sučelje može izgledati kao klasa, ali nije.