Sučelje u Java s Primjerom
Što je sučelje u Java?
An Sučelje u Java programski jezik je definiran kao apstraktni tip koji se koristi za specificiranje ponašanja klase. A Java sučelje sadrži statičke konstante i apstraktne metode. Klasa može implementirati više sučelja. U Java, sučelja se deklariraju pomoću ključne riječi interfejs. Sve metode u sučelju su implicitno javne i apstraktne.
Sintaksa za deklariranje sučelja
Da biste koristili sučelje u svojoj klasi, dodajte ključnu riječ "implements" nakon naziva svoje klase nakon čega slijedi naziv sučelja.
interface { //methods }
Primjer implementacije sučelja
Hajdemo sada razumjeti sučelje u Java s primjerom:
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Kliknite ovdje ako video nije dostupan
Zašto je potrebno sučelje?
Za razumijevanje upotrebe sučelja u Java bolje, da vidimo Java primjer sučelja. Klasa “Media Player” ima dvije podklase: CD player i DVD player. Svaki ima svoju jedinstvenu implementaciju sučelja Java način sviranja glazbe.
Druga klasa “Combo pogona” nasljeđuje i CD i DVD (pogledajte sliku ispod). Koju bi metodu igranja trebao naslijediti? To može uzrokovati ozbiljne probleme s dizajnom. I stoga, Java ne dopušta višestruko baština.
Sada uzmimo još jedan primjer psa.
Pretpostavimo da imate zahtjev gdje klasa “pas” nasljeđuje klasu “životinja” i “Kućni ljubimac” (pogledajte sliku ispod). Ali ne možete produžiti dva razreda Java. Dakle, što biste učinili? Rješenje je Interface.
Pravilnik za sučelje kaže,
- A Java implementirati sučelje je 100% apstraktna klasa i ima samo apstraktne metode.
- Klasa može implementirati bilo koji broj sučelja.
Klasa Pas može se proširiti na klasu "Životinja" i implementirati sučelje kao "Kućni ljubimac".
Java Primjer sučelja:
Hajdemo razumjeti donji program sučelja u Java:
Korak 1) Kopirajte sljedeći kod u editor.
interface Pet{ public void test(); } class Dog implements Pet{ public void test(){ System.out.println("Interface Method Implemented"); } public static void main(String args[]){ Pet p = new Dog(); p.test(); } }
Korak 2) Spremite, kompajlirajte i pokrenite kod. Promatrajte izlaz sučelja u Java program.
Razlika između klase i sučelja
U klasi možete instancirati varijablu i stvoriti objekt. | U sučelju ne možete instancirati varijablu i stvoriti objekt. |
Klasa može sadržavati konkretne (s implementacijom) metode | Sučelje ne može sadržavati konkretne (s implementacijom) metode |
Specifikatori pristupa koji se koriste s klasama su privatni, zaštićeni i javni. | U sučelju se koristi samo jedan specifikator - Public. |
Kada koristiti sučelje i apstraktnu klasu?
- Koristite apstraktnu klasu kada treba definirati predložak za grupu podklasa
- Koristite sučelje kada je potrebno definirati ulogu za druge klase, bez obzira na stablo nasljeđivanja tih klasa
Mora znati činjenice o sučelju
- A Java klasa može implementirati više Java sučelja. Neophodno je da klasa mora implementirati sve metode deklarirane u sučeljima.
- Klasa bi trebala nadjačati sve apstraktne metode deklarirane u sučelju
- Sučelje omogućuje slanje poruke objektu bez obzira kojoj klasi pripada.
- Klasa mora osigurati funkcionalnost za metode deklarirane u sučelju.
- Sve metode u sučelju su implicitno javne i apstraktne
- Sučelje se ne može instancirati
- Referenca sučelja može ukazivati na objekte svojih implementirajućih klasa
- Sučelje se može proširiti iz jednog ili više sučelja. Klasa može proširiti samo jednu klasu, ali implementirati bilo koji broj sučelja
- Jedno sučelje ne može implementirati drugo sučelje. Ako je potrebno, mora proširiti još jedno sučelje.
- Sučelje koje je deklarirano unutar drugog sučelja naziva se ugniježđeno sučelje
- U trenutku deklaracije, varijabla sučelja mora biti inicijalizirana. U suprotnom, kompajler će izbaciti pogrešku.
- Klasa ne može implementirati dva sučelja u Javi koja imaju metode s istim imenom, ali različitim povratnim tipom.
Sažetak:
- Klasa koja implementira sučelje mora osigurati funkcionalnost za metode deklarirane u sučelju
- Sve metode u sučelju su implicitno javne i apstraktne
- Sučelje se ne može instancirati
- Referenca sučelja može ukazivati na objekte svojih implementirajućih klasa
- Sučelje se može proširiti iz jednog ili više sučelja. Klasa može proširiti samo jednu klasu, ali implementirati bilo koji broj sučelja