Mik azok az interface-ek?
Szóval... Biztosan szoktál hajat szárítani hajszárítóval, ugye? Nos, mi is kell a hajszárítónak, hogy működjön? Áram. És áram honnan lesz? Na azt sok mindenből szerezhetünk, például:
- hőerőmű
- szélerőmű
- vízerőmű
- atomerőmű
- aggregátor
- akkumulátorok
stb.
Így első felindulásból hogyan is csinálnánk meg a Hajszárító osztályt?
class Hajszárító {
public Hőerőmű Áramforrás;
}
És ez szépen menni is fog:
Hajszárító h = new Hajszárító();
Hőerőmű e = new Hőerőmű();
h.Áramforrás = e;
De itt már bajok lesznek:
Hajszárító h = new Hajszárító();
Atomerőmű e = new Atomerőmű ();
h.Áramforrás = e;
Azért valljuk be... Te megvennéd azt a hajszárítót, ami csak hőerőműből tudja az áramot venni?
A lényeg az az, hogy a világban több dolog is biztosít egy erőforrást/szolgáltatást, és mi azt akarjuk, hogy akármelyiket is választom, tudjam használni, függetlenül attól, hogy ténylegesen mi is az, ami azt biztosítja, és azt hogyan biztosítja. A hajszárítóhoz mi kell? Áram. És amikor használni akarom, érdekel engem, honnan lesz áram, és az az áram hogyan is áll elő? Nem. Az interfész pont erre lesz jó. Ez nem más, mint egy megszorítás, hogy egy tárgynak, amelyre ez a megszorítás érvényes, milyen szolgáltatást kell nyújtania, és azt hogyan kell elérhetővé tennie, hogy más tárgyak használni tudják. No nézzük:
//Ez a megszorítás:
interface Áramforrás {
void getÁram();
}
//Ezek azok a dolgok a világban, amelyekre érvényes a megszorítás:
class Hőerőmű : Áramforrás {
public void getÁram() {...}
}
class Atomerőmű : Áramforrás {
public void getÁram() {...}
}
//És ez a tárgy akarja használni a megszorítás által biztosított erőforrást/szolgáltatást:
class Hajszárító {
public Áramforrás af;
public void Szárít() {
this.af.getÁram(); //Tökmindegy, mi is az az áramforrás, tuti, hogy getÁram metódusa lesz neki.
}
}
Innentől kezdve tökmindegy, mit kötök rá a hajszárítóra, azt fogja tudni használni a megszorítás miatt:
Hajszárító h = new Hajszárító();
Hőerőmű he = new Hőerőmű();
Atomerőmű ae = new Atomerőmű();
h.af = he;
h.af = ae;
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!