Preporučeno, 2024

Izbor Urednika

Razlika između razreda i sučelja u Javi

Klasa i sučelje koriste se za stvaranje novih referentnih tipova. Klasa je skup polja i metoda koje djeluju na poljima. Sučelje ima potpuno apstraktne metode, tj. Metode s nikim. Sučelje je sintaktički slično klasi, ali postoji velika razlika između klase i sučelja, a klasa se može instancirati, ali sučelje se nikada ne može instancirati. Tako ćemo naučiti nešto više razlike između klase i sučelja uz pomoć tablice za usporedbu prikazane u nastavku.

Tablica usporedbe

Osnova za usporedbuklasaSučelje
Osnovni, temeljniKlasa je instancirana za stvaranje objekata.Sučelje nikada ne može biti instancirano jer metode nisu u stanju izvršiti bilo koju radnju na pozivanje.
Riječklasasučelje
Specifikator pristupaČlanovi klase mogu biti privatni, javni ili zaštićeni.Članovi sučelja uvijek su javni.
metodeMetode klase su definirane za izvođenje određene akcije.Metode u sučelju su čisto apstraktne.
Provesti / ProdužiteKlasa može implementirati bilo koji broj sučelja i može proširiti samo jednu klasu.Sučelje može proširiti više sučelja, ali ne može implementirati bilo koje sučelje.
KonstruktorKlasa može imati konstruktore za inicijalizaciju varijabli.Sučelje nikada ne može imati konstruktora jer jedva da postoji neka varijabla za inicijalizaciju.

Definicija klase

Klasa je najvažniji aspekt Java programiranja bez klasa koje ne možete provesti java program. Klasa stvara referentne tipove i ti se referentni tipovi koriste za stvaranje objekata. Klasa ima potpis i tijelo. Potpis klase ima ime klase i informacije koje govore je li klasa naslijedila drugu klasu. Tijelo klase ima polja i metode koji djeluju na tim poljima. Klasa je izrađena pomoću klase ključne riječi. Omogućuje nam da vidimo kako objaviti razred.

 class class_name {/ * polja ... metode * /} 

Kada je klasa instancirana, svaki stvoreni objekt sadrži kopiju polja i metoda s njima. Polja i članovi deklarirani unutar klase mogu biti statični ili nestatički. Vrijednost statičkih članova je konstantna za svaki objekt, dok se ne-statički članovi inicijaliziraju od strane svakog objekta različito prema njegovom zahtjevu.

Članovi klase imaju pristupne specifikatore koji odlučuju o vidljivosti i dostupnosti članova korisniku ili potklasama. Specifikatori pristupa su javni, privatni i zaštićeni. Klasu može naslijediti druga klasa koristeći pristupnik koji će odlučiti o vidljivosti članova superklase (naslijeđene klase) u potklasi (naslijeđena klasa). Tako razred ispunjava koncept skrivanja podataka i enkapsulacije u objektno orijentiranom programiranju.

Definicija sučelja

Sučelje je također među referentnim tipovima definiranim u Javi. Važnost sučelja je da u Javi klasa može naslijediti samo jednu klasu. Da bi se izbjeglo ovo ograničenje, dizajneri Jave uveli su koncept sučelja. Sučelje je sintaktički slično klasi, ali nema deklaracije u polju i metode unutar sučelja nemaju nikakvu implementaciju. Sučelje je deklarirano pomoću sučelja ključnih riječi. Pogledajmo deklaraciju sučelja.

 sučelje interface_name {vrsta var_name = vrijednost; metoda tipa1 (popis parametara); metoda tipa2 (popis parametara);, , } 

Sučelje ne definira niti jednu metodu deklariranu unutar njega jer joj nedostaju polja za rad. Samo zato što bilo koja metoda unutar sučelja ne izvodi nikakvu radnju, sučelje se nikada ne može instancirati. Ako sučelje ima bilo kojeg člana polja, ono se mora inicijalizirati u vrijeme njihove deklaracije. Sučelje nikada ne sadrži konstruktore jer mu nedostaju članovi polja za inicijalizaciju. Dakle, sučelje definira samo ono što klasa mora učiniti umjesto kako to mora činiti.

Jednom stvoreno sučelje može se implementirati bilo kojim brojem razreda pomoću alata za ključne riječi. Ali klase koje implementiraju sučelje moraju definirati sve metode unutar sučelja. Sučelje također može naslijediti drugo sučelje pomoću ključne riječi expand. Ako klasa implementira sučelje koje proširuje drugo sučelje. Tada klasa mora definirati metode oba sučelja koja se pojavljuju u lancu. Metode unutar sučelja moraju uvijek biti javne jer im moraju pristupiti klase koje ih implementiraju.

Ključne razlike između razreda i sučelja u Javi

  1. Klasa se može instancirati stvaranjem njezinih objekata. Sučelje nikada nije instancirano jer su metode deklarirane unutar sučelja apstraktne i ne obavljaju nikakvu radnju, tako da nema koristi od stvaranja bilo kojeg sučelja.
  2. Klasa je deklarirana pomoću klase ključne riječi. Na isti način, sučelje se stvara pomoću sučelja ključnih riječi.
  3. Članovi klase mogu imati pristupnik kao javni, privatni, zaštićeni. No, članovi sučelja su uvijek javni jer moraju pristupiti klasama koje ih provode.
  4. Metode unutar klase su definirane za izvođenje akcije na poljima deklariranim u klasi. Kako sučelje nema u deklaraciji polja, metode unutar sučelja su čisto apstraktne.
  5. Klasa može implementirati bilo koji broj sučelja, ali može proširiti samo jednu super klasu. Sučelje može proširiti bilo koji broj sučelja, ali ne može implementirati bilo koje sučelje.
  6. Klasa ima konstruktore definirane unutar njega kako bi dobila varijablu inicijaliziranu. No, sučelje nema konstruktore jer nema polja za inicijalizaciju. Polja sučelja se inicijaliziraju samo u vrijeme njihove deklaracije.

Zaključak:

I klase i sučelja imaju svoju važnost. Klasa se koristi kada trebamo definirati kako će se zadatak obaviti. Sučelje se koristi kada trebamo znati koji zadatak treba obaviti.

Top