Programozási felületek, útmutatók és példák

3. fejezet Csomagok és interfészek

interfészek

Lehet, hogy észrevette, hogy akkor kap egy kiterjesztést csak egy osztály, minden osztály vagy származtatott egyszülős családokat, ábrán látható. 3.4 is. Minden osztályban kerül sor csak az „Ádám” az osztály objektum. De gyakran van szükség, hogy létrehoz egy osztály két osztály lóg, ábrán látható. 3.4 b. Ez az úgynevezett többszörös öröklés (többszörös öröklés). A többszörös öröklés, nincs semmi baj. Nehézségek merülnek fel, ha az osztályok által generált lóg magukat egyetlen osztály, ábrán látható. 3.4 * in. Ez az úgynevezett „rombusz alakú” örökséget.

Ábra. 3.4. Különböző változatai öröklés

Sőt, még a osztályú F () módszer meghatározása, amelyhez fordulunk egy bizonyos osztály módszer. Biztosak lehetünk abban, hogy az eljárás f tegyen eleget, mi van írva a osztály, azaz a. E. Eljárás A.f? Talán felülbírálni B és C osztályú? Ha igen, milyen beállítást használjuk: B.F () vagy vö ()? Persze, akkor azokat az eseteket, az osztályok és hozzáférési módszerek azokban az esetekben, de ez egészen más kérdés.

Más programozási nyelvek, ez a probléma megoldódott különböző módon, főleg nevének megadásával az eljárás ft). De ez mindig törött KISS elv. Mintegy többszörös öröklés mindig egy csomó ellentmondás, megvannak a lelkes támogatói és egyformán lelkes ellenfél. Nem fogunk beleavatkozni a viták az üzleti - a legjobb nyelv használatát jelenti, hogy megoldja a problémákat.

Az alkotók a Java nyelvet, miután sok vita és mérlegelés kapott csoport - betiltották többszörös öröklés egyáltalán. Amikor a kiterjesztése az osztály szó után kiterjeszti írhat csak egy nevet a mikrotörzs. A szuper finomítás csak azokra tagjainak közvetlen mikrotörzs.

De mi van, ha még mindig szükség van, hogy egy pár ősök a generáció? Például, van egy közös Automobile Car osztályban. ahonnan generál Teherautó osztály és az osztály személygépkocsi Sag. De itt meg kell leírni a pickup. Ebbe az osztályba örökli a tulajdonságait és teherautók, és az autók.

Ilyen esetekben más nyelvet használ építeni Java-felület. Óvatosan elemezve többszörös öröklés OOP elmélet úgy találta, hogy a probléma csak akkor hoz létre végrehajtásának módszerei, nem azok leírását.

Interface (interfész), szemben az osztály tartalmaz egyetlen állandók és módszerek főcímek, anélkül, hogy azok megvalósítása.

Interfészek kerülnek ugyanazokat a csomagokat és alcsomag osztályokat, és összeállított ugyanabba az osztályba-fájlokat.

Interface leírás szóval kezdődik felület. amely megelőzte az állami módosítót. ami azt jelenti, valamint az osztályt, hogy a felület mindenhol elérhető. Ha a módosító nem nyilvános, a felület csak akkor lesz látható a csomagot.

Miután a szót felület van írva a neve a felület. akkor is, állni a szót, és kiterjeszti az ősei a felületek vesszővel. Így a felületek hozhatók létre a felületek, hogy legyen saját, függetlenül attól, osztály, hierarchia, és előfordulhat, hogy a többszörös öröklést felületek. Ebben a hierarchiában nincs gyökér, közös őse.

Ezután a támaszra van írva, bármilyen sorrendben, és az állandó címoldalára módszereket. Elmondhatjuk, hogy a felület minden módszer elméleti, de a szó elvont nem kell írni. Az állandók mindig statikusak, de ez nem szükséges megadni a statikus kulcsszó és végleges.

Minden állandók és módszerek interfészek mindig nyitva vannak, nem is .ukazyvat módosító nyilvános.

Íme a program ajánlható járművek hierarchia:

interface Autó kiterjed Automobile

interfész Truck kiterjed Automobile

interfész Pickup kiterjed autó, kamion

Így a felület - ez csak egy vázlat, vázlat. Megállapítja, hogy mit kell tennie, de nem határozza meg, hogyan kell csinálni.

Hogyan kell használni ugyanazt a felületet, ha teljesen elvont, de nincsenek tele módszer?

Ne használjon interfész és annak végrehajtására (végrehajtás). Interfész megvalósítása - egy osztály, amelyben a festett technikák egy vagy több interfész. A fejléc az osztály után a nevét, vagy a név után annak superclass esetleges írott szó és munkagépek, vesszővel elválasztva sorolja fel a nevét a felületeket.

Itt van, hogyan lehet végrehajtani a hierarchia járművek:

interface Autó kiterjed Automobile.>

osztály Truck végrehajtja Automobile.>

osztály Pickup Truck kiterjed végrehajtja Car

interface Autó kiterjed Automobile

interfész Truck kiterjed Automobile

osztály Pickup végrehajtja autó, kamion

A végrehajtás a felület hiányosak lehetnek, bizonyos interfész módszerek vannak festve, míg mások - nem. Ez a felismerés - egy absztrakt osztály, mindenképpen jelöljük meg a módosító elvont.

Hogyan lehet megvalósítani az osztályteremben felszedő módszer f (). leírt mondák felület és teherautó felület ugyanaz az aláírás? A válasz egyszerű - semmi. Ezt a helyzetet nem lehet megvalósítani a Pickup osztályban. Meg kell tervezni a programot egy másik utat.

Így a felület lehetővé teszi, hogy végre a Java tiszta objektum-orientált tervezés, amely középpontjában a kérdések a projekt végrehajtásához.

Kezdhetjük kidolgozása, írd formájában hierarchiája interfészek, gondolkodás nélkül a kivitelezés, majd építeni ezt a tervezetet osztály hierarchia, mivel a korlátozások egyetlen öröklési és láthatóságának osztály tagjai.

Listing 3.3 bemutatja, hogyan lehet gyűjteni az interface háziállat kórus listában 2.2.

Listing 3.3. Az interfész a szervezet polimorfizmus

osztály Dog végrehajtja Voice

public void hang ()

public static void main (String [] args)

A (int k = -0; k <10; k++)

esetében Lights.RED: System.out.println ( "Stop!"); break;

esetében Lights.YELLOW: System.out.println ( "Várj!"); break;

esetében Lights.GREEN: System.out.println ( "Menj!"); break;

esetében Lights.ERROR: System.err.println ( "Time Error"); break;

alapértelmezett: System.err.println ( "Ismeretlen fény."); return;

Itt, a Lights felületen. Az állandók közös az egész projekt.

A Timer osztály megvalósítja ezt a felületet, és használja a konstansok közvetlenül saját. elmozdulás ebbe az osztályba tartozó kapcsolási módszer biztosítja jelek eltérő késleltetési lámpánál színtől függően. Menet osztály végzi késleltetési alvási () módszer a standard könyvtár amely továbbítja késleltetési idő ezredmásodpercben. Ez a módszer kivételkezelés próbát<> catch () <>. ebből fogunk beszélni a 16. fejezetben.

TrafficReguiator osztály nem hajtja végre a fények felület és használja a teljes nevét Lights.RED stb Ez azért lehetséges, mert a folyamatos vörös, sárga és zöld statikus alapértelmezés szerint.

Most már tudjuk, mind a Java nyelven azt jelenti, hogy tervezzen egy megoldást a problémára. Lezáró beszélgetés design, nem beszélve a folyamatosan növekvő minták gyűjteménye (tervezési minták).