Az öröklés során felülírja a módszereket
Az előző esetektől eltérően a szuperklasszis konstruktor egy argumentumot ad át, amelyet a számmezőhöz értékként hozzárendeltek. Mint korábban, a field értéke megjelenik a showA () superclass módszerrel.
Az alosztály-konstruktornak van egy érve is. Az argumentum értéke a számmezőhöz van hozzárendelve. közvetlenül az osztályban. Az azonos nevű mező értéke kisebb, mint a konstruktor argumentuma. Ehhez a megfelelõ argumentummal ellátott superclass konstruktort hívják. Amikor egy alosztály-konstruktort végrehajtunk, egy üzenet jelenik meg a két mező értékéről is, és az alosztályban definiált mezőre a hívást a név számmal hajtjuk végre. de hozzáférést kap a szupersztályban meghatározott mezőhöz a szuperszámú utasítással. A két mező értékeit a showB () metódus segítségével lehet megjeleníteni.
A program fő módszere tartalmazza az alosztály-objektum, a számmező értékének megváltoztatásához szükséges parancsot. (obj.number = 10), valamint a fieldA values (showA () és showB () metódusok segítségével történő kimenő parancsok). Ennek eredményeképpen a következőket kapjuk:
Teremtett egy szuperklasszis-objektumot 4 mezővel Az objektumot 4-ös és 5-ös mezőkkel hozták létre
A 4. és 10. objektumok mezői
Ugyanazokkal az elvekkel, mint a mezők kitöltése a megfelelő nevekkel, az ugyanazon aláírással rendelkező módszereket kicserélik. Azonban a módszereknél a helyzet némileg bonyolultabb, mivel létezik olyan mechanizmus, mint a túlterhelési módszerek. A túlterhelés mellett fontos módszer a módszerek újradefiniálása.
Meg vagyok lepődve, hogy betartod az elveket. Akkor a kormányra, majd ellene!
Mint már említettük, ha egy alosztálya leírt módszer az aláírás, amely megfelel az aláírás módszer örökölt superclass, akkor a módszer alosztály felülbírálja mikrotörzs módszer. Más szóval, ha a megfelelő módszert hívják, akkor azt a verziót használják, amelyet közvetlenül az alosztály ír le. Ebben az esetben a szuperosztályból származó régi módszer elérhetővé válik, ha elérhetővé válik a linkformátumban a kulcsszó szuper használatával.
Alapvető különbség van a kényszerítő és a túlterhelési módok között. Ha a túlterhelési módszerek ugyanazt a nevet adják, de különböző aláírásokat. Amikor felülírja, nemcsak a módszerek nevei egyeznek, hanem
A program eredményeképpen kapjuk meg az üzenetek sorrendjét:
Az 1. számú objektum jött létre! A 2. objektum létrejön! Az 1-es számú tárgy esetében:
Terepi szám: 10 A 2. számú objektumhoz: Field number: -20 Terepi szimbólum: a 2. objektumhoz: Field number: 100 Terepi szimbólum: a 2. objektumhoz: Field number: 0 Field szimbólum: z
Megvizsgáljuk a programkódot és a végrehajtás eredményét. A program leírja a ClassA (superclass) osztályt, amely alapján létrehozza a Class B alosztályt. Az ClassA-nak van egy egész számmezője. statikus egész szám mező (nulla értékkel inicializálva) és egy zárt egész mezőkód. Ezenkívül az osztály egy argumentumot (a számmező értékét), egy set () metódust ír le egy argumentummal, hogy hozzárendeljen egy értéket a számmezőhöz. és a show () metódus a számmező értékének megjelenítéséhez.
A statikus szám mezõ kiszámítja a létrehozott objektumok számát. A következő osztályobjektum létrehozásakor a számláló értéke egyenként növekszik. Ehhez az osztály ++ konstruktor tartalmazza a count ++ parancsot. Továbbá a tervező módszer set () beállítása a mező száma (az érv kivitelező vezetjük érvként, hogy a módszer), és a parancs kód = count van beállítva, hogy a lezárt területen kódot. A kódmező tartalmazza azt a sorszámot, amely alatt a megfelelő objektumot létrehozták. Ehhez a számlálómező nem megfelelő, mert statikus, és minden egyes új objektum létrehozásakor megváltozik. A kódmezőben a számmező mező értéke az objektum létrehozását követően keletkezik, és ennek következtében az objektum kódmezője nem változik.
Az öröklés során felülírja a módszereket
A kódmező (egy mező értékének hozzárendelése után) a konstruktorban kerül felhasználásra, hogy megjelenítse az üzenetet egy objektum létrehozásáról a megfelelő számmal. Az objektum számát (a kódmezőt) a show () metódusban is használják. hogy könnyebben nyomon követhesse, hogy mely objektum információ jelenjen meg a számmező értéke alapján.
ClassB alosztályt hoz létre az osztályú superclass alapján. A ClassB alosztályban a statikus számmező és a számmező öröklődik. A privát kódmező nem öröklődik. Ezen örökölt mezők mellett a Symbol szimbólum mezőt közvetlenül a ClassB osztályban írja le. Az osztály konstruktor két argumentumot tartalmaz: az első típusú int a számmezőhöz és a második típus karakter a szimbólummezőhöz.
ClassB kivitelező kód áll csak két parancsot: hívja a kivitelező a superclass parancs super (n) és a karakter rendelt parancs értékmezőben szimbólum = s (n és k - konstruktorargumentum). A második csapattal minden egyszerű és egyszerű. Az érdeklődést a parancs jelenti, hogy hívja a superclass konstruktort. Először is, ezzel a konstruktorral az örökölt mezőszám értéket kap. Másodszor, az örökölt statikus mező számának értéke egy értékkel növekszik. Ez azt jelenti, hogy minden objektum, mind a superclass, mind az alosztály közös. Harmadszor, bár a kódmező nem öröklődik, a memóriaterület hozzá van rendelve, és a létrehozott objektum sorszáma be van írva. Új objektum létrehozásakor üzenet jelenik meg, és az objektumszám a "nem létező" kód mezőből olvasható.
A show () metódust a ClassB osztályban felülírják. A ClassB osztályban leírt show () metódus aláírása megegyezik a show () metódus aláírásával. osztályban leírt. Ha a show () metódus az osztályban információt nyújt az objektumszámról és a számmező értékéről. akkor a ClassB osztályban a show () metódus adja ki a szimbólummező értékét is. Ebben az esetben az osztályból származó módszer régi (eredeti) verzióját a felülbírálati módszer mutatják (). Ehhez használja az űrlap super.show () utasításait. A módszer első változata többek között az objektum rendszámait olvassa le a nem öröklött (de valójában létező) kódmezőből, és megjeleníti azt a képernyőn megjelenő üzenetben.
A Class (B) osztályú () metódus túlterhelt. Bár az osztálynak ugyanaz a neve van, a szuperklassz és az alosztály algoritmusai eltérőek. A szuperosztályban a set () metódus egy numerikus argumentumot tartalmaz, és ennek a módszernek az alosztályába két argumentumot tartalmaz: numerikus és szimbolikus. Ezért a ClassB osztályban a set () metódus két változata létezik, egy és két argumentummal. Az első a ClassA szuperosztályából örökölt. és a második közvetlenül az alosztályban van meghatározva
A fő módszer a program parancsok ClassA objA = új ClassA (10) és a ClassB objB = új ClassB (-20, 'a') két tárgy: objA objektum mikrotörzs és alosztály objektumot objB. E parancsok végrehajtása eredményeképpen létrejön az №1 objektum üzenet a képernyőn! és a 2. objektum létrejön! - Az üzeneteket a konstruktorok jelzik. A létrehozott objektumok mezőinek értékeit az objA.show () és objB.show () parancsok ellenőrzik. Mivel a show () módszer túlterhelt, az első esetben