Mi az interfész a Java-ban?
Az interfész a Java programozásban absztrakt típusként van definiálva, amelyet az osztály viselkedésének megadására használnak. A Java felület statikus konstansokat és absztrakt módszereket tartalmaz. Egy osztály több interfészt is megvalósíthat. A Java-ban az interfészeket az interfész kulcsszóval deklaráljuk. A felület összes módszere implicit módon nyilvános és elvont.
Szintaxis az interfész deklarálásához
interface {//methods}
Ha kezelőfelületét szeretné használni az osztályában, csatolja az "eszköz" kulcsszót az osztály neve és az interfész neve után.
Példa az interfész megvalósítására
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Kattintson ide, ha a videó nem érhető el
Miért van szükség interfészre?
A Java interfész fogalmának jobb megértéséhez lássunk egy példát. A "Media Player" osztálynak két alosztálya van: CD-lejátszó és DVD-lejátszó. Mindegyiknek egyedi megvalósítási módja van a zene lejátszására.
Egy másik "Combo meghajtó" osztály örökli a CD-t és a DVD-t is (lásd az alábbi képet). Melyik játékmódot kell örökölnie? Ez komoly tervezési problémákat okozhat. Ezért a Java nem engedélyezi a többszörös öröklést.
Vegyünk egy másik példát a Dog-ra.
Tegyük fel, hogy van olyan követelménye, ahol a "kutya" osztály örökli az "állat" és a "háziállat" osztályt (lásd az alábbi képet). De a Java-ban nem lehet két osztályt kiterjeszteni. Szóval mit tennél? A megoldás az Interface.
Az interfész szabálykönyve szerint:
- Az interfész 100% absztrakt osztály, és csak elvont módszerekkel rendelkezik.
- A Class tetszőleges számú interfészt képes megvalósítani.
A "Class Dog" kiterjeszthető az "Animal" osztályra, és az interfészt "Pet" néven valósíthatja meg.
Java interfész példa:
1. lépés: Másolja a következő kódot egy szerkesztőbe.
felület Pet {public void teszt ();}osztályú kutya megvalósítja a Pet {public void teszt () {System.out.println ("Interfész módszer megvalósítva");}public static void main (String args []) {Pet p = új kutya ();p.test ();}}
2. lépés: Mentse, fordítsa le és futtassa a kódot. Figyelje meg a kimenetet.
Különbség az osztály és az interfész között
Osztály | Felület |
---|---|
Az osztályban példányosíthatja a változót, és létrehozhat egy objektumot. | Egy felületen nem tudja példányosítani a változót és létrehozni egy objektumot. |
Az osztály konkrét (megvalósítással rendelkező) módszereket tartalmazhat | Az interfész nem tartalmazhat konkrét (megvalósítással rendelkező) módszereket |
Az osztályokhoz használt hozzáférési specifikátorok privát, védett és nyilvánosak. |
Az interfészben csak egy specifikációt használunk - Nyilvános. |
Mikor kell használni az interfészt és az absztrakt osztályt?
- Használjon absztrakt osztályt, ha sablont kell definiálni egy alosztálycsoport számára
- Használjon interfészt, ha szerepkört kell meghatározni más osztályokhoz, függetlenül ezen osztályok öröklődési fájától
Tudnia kell az interfészről
- Egy Java osztály több Java interfészt képes megvalósítani. Szükséges, hogy az osztálynak végre kell hajtania az összes felületen deklarált módszert.
- Az osztály felülírja az interfészen deklarált összes absztrakt módszert
- Az interfész lehetővé teszi az üzenet küldését egy objektumnak anélkül, hogy figyelembe venné, mely osztályokhoz tartozik.
- Az osztálynak működnie kell a felületen deklarált módszerek számára.
- Az interfész összes módszere implicit módon nyilvános és elvont
- Az interfész nem példányosítható
- Az interfész hivatkozás megvalósítási osztályainak objektumaira mutathat
- Egy interfész kiterjedhet egy vagy több interfészről. A Class csak egy osztályt bővíthet, de tetszőleges számú interfészt megvalósíthat
- Egy interfész nem valósíthat meg másik interfészt. Szükség esetén ki kell terjesztenie egy másik interfészt.
- Egy másik felületen deklarált interfészt beágyazott interfésznek nevezünk
- A deklaráláskor az interfész változót inicializálni kell. Ellenkező esetben a fordító hibát dob.
- Az osztály nem képes két olyan interfészt megvalósítani a java-ban, amelyek azonos nevű, de eltérő visszatérési módszerrel rendelkeznek.
Összegzés :
- Az interfészt megvalósító osztálynak funkcionalitást kell biztosítania az interfészen deklarált módszerekhez
- Az interfész összes módszere implicit módon nyilvános és elvont
- Az interfész nem példányosítható
- Az interfész hivatkozás megvalósítási osztályainak objektumaira mutathat
- Egy interfész kiterjedhet egy vagy több interfészről. Egy osztály csak egy osztályt bővíthet, de tetszőleges számú interfészt valósíthat meg