Sažetak klase i sučelja u Java
Sažetak klase i sučelja su primarno korišteni za apstrakciju, međutim oni su vrlo različiti jedni od drugih. Obje su jezgreni dio Java, ali koriste vlastitu aplikaciju. Iako oba izraza mogu biti međusobno sinonim, ne mogu se koristiti međusobno.
Postoje značajne razlike između njih. Dok je metoda sučelja prema zadanim postavkama apstraktna, sažetak može sadržavati i apstraktne i ne apstraktne metode. Pa, od Java 8, sučelja također imaju metode implementacije i mogu imati i statične i zadane metode u Javi. Razmotrimo razliku između njih u detalju.
Što je abstraktna klasa u Java?
Sažetak klase u Javi je klasa koja je deklarirana sažetak - može sadržavati ili ne smije sadržavati apstraktne metode. To je sasvim slično Java sučelju, osim činjenice da može sadržavati zadanu implementaciju metode. Kao u objektno orijentiranom programiranju, apstrakcija u Javi postiže se pomoću apstraktnih klasa i sučelja. U Java, apstrakcija znači skrivanje nevažnih detalja od korisnika da se usredotoče samo na bitne detalje kako bi se povećala učinkovitost čime se smanjuje složenost. Ključna riječ "sažetak" koristi se za stvaranje abstraktne klase neposredno prije klasične ključne riječi u deklaraciji klase.
Sažetak klase može ili ne mora sadržavati metode apstrakcije (metode bez tijela), ali ako klasa ima barem jednu metodu apstrakcije, ona mora biti deklarirana kao apstraktna. Međutim, metode koje nisu apstraktne mogu se koristiti samo u apstraktnoj klasi, ali samo za implementaciju zadanog ponašanja. Metode u apstraktnoj klasi mogu imati modifikatore pristupa kao što su privatni, javni, statički i zaštićeni, ovisno o razini vidljivosti. Sažetak klase ne može se isticati i ne daje 100 posto apstrakcije zbog činjenice da može imati konkretnu metodu.
Što je sučelje?
Sučelje, iako izgleda kao klasa, nije. Budući da Java ne podržava višestruke nasljednosti, sučelje ponekad je idealno za pružanje baze za hijerarhiju klase. Sučelje je više nacrt klase koji se također koristi za postizanje apstrakcije u Javi. Sadrži apstraktne metode i statičke konstante. Jednostavno rečeno, sučelje je zbirka apstraktnih metoda koja se koristi za određivanje ponašanja koje klasa mora provesti. Za razliku od apstraktne klase, sučelje pruža punu apstrakciju u Javi. Može imati obje metode i varijable baš kao i klasa, no metode koje su deklarirane u sučelju su apstraktne prema zadanim postavkama.
Razlika između klase sažetak i sučelja u Javi
- "Višestruki nasljeđivanje" sažetak klase i sučelja u Java - Unatoč činjenici da su i apstraktna klasa i sučelje primarno korišteni za apstrakciju, oni su prilično različiti jedan od drugoga. Dok je apstraktna klasa klasa, sučelje je sučelje. To znači da sučelje može samo proširiti drugo Java sučelje, apstraktni razred može implementirati više nasljedstva u Javi. Pa, Java ne podržava više nasljedstva, ali Java može implementirati više nasljedstva.
- "Vrsta metode" sažetak klase i sučelja u Java - Druga velika razlika između ta dva je da, dok sučelje može imati samo apstraktne metode, apstraktni razred može imati i apstraktne i ne apstraktne metode. Međutim, od Java 8 sučelje može imati zadane i statičke metode.
- "Modifikatori pristupa" sažetak klase i sučelja u Java - Sažetak klasa može imati javne, privatne i zaštićene pristupne modifikatore, međutim metode sučelja implicitno su javne i apstraktne. Ne možete koristiti bilo koji drugi modifikator pristupa s metodama sučelja '.
- "Implementacija" sažetaka klase i sučelja u Javi - Sažetak klase može osigurati implementaciju sučelja. Sučelje, s druge strane, ne može osigurati implementaciju apstraktne klase.
- "Ključna riječ" odslušane klase i sučelja u Javi- Iako se "apstraktna" ključna riječ koristi za deklariranje metode apstraktne klase kao sažetak, međutim, sučelja su sasvim različita priča; oni mogu imati samo javne, statičke konačne konstante i metode deklaracije.
- "Koristi" sažetak klase i sučelja u Java - Iako je sučelje idealno za deklaraciju tipa, apstraktni razred je najprikladniji za reusability kod i perspektivu evolucije. Sučelje izgleda kao klasa, ali nije klasa.
- "Pouzdanost" sažetak klase i sučelja u Java- Još jedna velika razlika između apstraktne klase i sučelja je ta da je bivši malo brži od posljednjeg jer je pretraživanje obično uključeno u sučelje prije nego što se bilo koja nadutana metoda naziva u Javi.
- "Konačne varijable" sažetak klase i sučelja u Java - Varijable deklarirane u sučelju su konačne prema zadanim postavkama, dok apstraktna klasa može ili ne mora sadržavati ne-konačne varijable.
Sažetak klasa vs sučelja u Java: tablica za usporedbu
Sažetak klasa | Sučelje |
Sažetak ključne riječi koristi se za stvaranje apstraktne klase i može se koristiti s metodama. | Ključna riječ sučelja koristi se za stvaranje sučelja, ali se ne može koristiti s metodama. |
Klasa može proširiti samo jednu apstraktnu klasu. | Klasa može implementirati više sučelja. |
Sažetak klase može imati i apstraktne i ne-apstraktne metode. | Sučelje može imati samo apstraktne metode. |
Varijable nisu zadane prema zadanim postavkama. Može sadržavati ne-konačne varijable. | Varijable su zadane u sučelju. |
Sažetak klase može pružiti implementaciju sučelja. | Sučelje ne može osigurati implementaciju apstraktne klase. |
Može imati načine implementacije. | Ona pruža apsolutnu apstrakciju i ne može imati metode implementacije. |
Može imati javne, privatne, statičke i zaštićene pristupne modifikatore. | Metode su implicitno javne i apstraktne u Java sučelju. |
Ne podržava više nasljedstva. | Podržava višestruke nasljednosti. |
Idealna je za ponovnu uporabu koda i razvojnu perspektivu. | Idealna je za deklaraciju tipa. |
Sažetak bodova na Sažetak Klasa i sučelja u Java
Oba apstraktna klasa i sučelje se koriste za apstrakciju; međutim, oni imaju svoj pravi udio razlika. Glavna razlika između njih je upravljana metodama apstrakcije. Dok prvi može imati ili ne mora imati apstraktne metode, potonji je implicitno apstraktan. Sažetak klase može imati i apstraktne i ne-apstraktne metode. Sučelje, s druge strane, može imati samo apstraktne metode, tako da ne mogu imati implementaciju, što jednostavno znači da sučelje ne može imati ne-apstraktne metode. Ne može se instancira apstraktna klasa koja zabranjuje stvaranje objekta. Sučelje, s druge strane, može izgledati kao klasa, ali nije.