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.

Zašto je potrebno sučelje

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.

Zašto je potrebno sučelje

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.

Zašto je potrebno sučelje

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".

Zašto je potrebno sučelje

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

Klasa
Sučelje
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