Az öröklődés az objektum-orientált programozás egyik alapfogalma. A programozás során az öröklés szó olyan kapcsolatot jelent, amelyben a gyermekosztály feltételezi a szülőosztály állapotát és viselkedését.
A szoftverfejlesztésben az öröklés célja a biztonságos és megbízható szoftver újrafelhasználásának megkönnyítése. Az öröklés egyik fő előnye, hogy megszünteti a redundáns kódot a programokban.
xbox sorozat x vs xbox one x
Hogyan működik az öröklődés
Az öröklődés gondolata az, hogy sok osztálynak vagy objektumnak ugyanazok a tulajdonságai és módszerei vannak. Ezért a megbízható szoftverek előállításának szellemében az új osztályok a már létező kapcsolódó osztályokból meríthetnek, és szükség esetén bővíthetik a meglévő állapotokat és viselkedést.
Az öröklés működésének valós példája a gyümölcsök figyelembe vétele lenne. Ez egy széles címke, amely különféle elemek beágyazására szolgál.
Az alma gyümölcs, és a narancs is. A narancs azonban nem alma, így nem lenne gyümölcs a készleteid között, ha bolt lenne. Lehet, hogy a készletben van egy gyümölcsrész, és ebben a részben konkrétabb tételek, például alma és narancs.
Így működik az öröklődés.
Az öröklés használata Java nyelven
Az öröklés minden olyan programozási nyelvben használható, amely az objektum-orientált programozási paradigmát használja. Az öröklés pontos használata azonban az adott programozási nyelvtől függ.
Például, A C ++ szintén objektum-orientált programozási nyelv . A C ++ támogatja az úgynevezett többszörös öröklődést, míg a Java csak az egyszeri öröklést.
Ez azt jelenti, hogy a Java nyelven egy szülőosztálynak sok gyermekosztálya lehet, de minden gyermekosztálynak csak egyetlen szülői osztálya lehet (egyetlen öröklés). Van azonban mód a közvetett többszörös öröklés elérésére a Java -ban, nagyszülő, szülő és gyermek kapcsolat létrehozásával.
Szülőosztály létrehozása Java nyelven
A szülőosztály kiválasztásának folyamata a szoftverkövetelmények dokumentumából objektum-orientált elemzés. E folyamat során az a kifejezést gyakran használják a lehetséges öröklési kapcsolatok azonosítására. A fenti példánkból kiindulva látnia kell, hogy a gyümölcs lesz a szülői osztályunk.
Példa a gyümölcsszülő osztályra
public class Fruit {
//Variable Declaration
protected String seed;
protected String skinColor;
protected String taste;
//Default Constructor
public Fruit(){
seed = '';
skinColor ='';
taste ='';
}
//Primary Constructor
public Fruit(String seed, String skinColor, String taste){
this.seed = seed;
this.skinColor = skinColor;
this.taste = taste;
}
//getters and setters
public String getSeed() {
return seed;
}
public void setSeed(String seed) {
this.seed = seed;
}
public String getSkinColor() {
return skinColor;
}
public void setSkinColor(String skinColor) {
this.skinColor = skinColor;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
//eat method
public void eat(){
//general code on how to eat a fruit
}
//juice method
public void juice() {
//general code on how to juice a fruit
}
}
A fenti szülőosztály egyik legjelentősebb aspektusa az egyes változó deklarációkhoz használt hozzáférés -módosító. A védett hozzáférés-módosító ideális a szülői osztályokban való használatra, mivel megakadályozza, hogy a nem gyermekosztályok hozzáférjenek a szülőosztály adatattribútumaihoz.
A kód alján bemutatjuk a konstruktorokat, gettereket és beállítókat, amelyek bármely Java osztály általános építőkövei. Végül két módszerrel ismerkedhet meg (gyümölcslé és evés), amelyeket a programunk szülőosztályán hoztak létre, mert univerzálisak minden gyümölcsre - minden gyümölcs ehető és gyümölcsleves.
Gyermekosztályok létrehozása Java nyelven
A gyermekosztályokat általában speciális vagy származtatott osztályoknak nevezik, mert az állapotot és viselkedést örökölik a szülőktől, és gyakran testreszabják ezeket az attribútumokat, hogy pontosabbak legyenek.
Példánkat folytatva látnia kell, miért lenne a narancs a fenti gyümölcsosztály megfelelő gyermekosztálya.
Példa narancsos gyermekosztályra
public class Orange extends Fruit{
//variable declaration
private int supremes;
//default constructor
public Orange() {
supremes = 0;
}
//primary constructor
public Orange(String seed, String skinColor, String taste, int supremes){
super(seed, skinColor, taste);
this.supremes = supremes;
}
//getters and setters
public int getsupremes() {
return supremes;
}
public void setsupremes(int supremes) {
this.supremes = supremes;
}
//eat method
public void eat(){
//how to eat an orange
}
//juice method
public void juice() {
//how to juice and orange
}
//peel method
public void peel(){
//how to peel an orange
}
}
Különbség van a szokásos Java osztály deklaráció kinézete és a fenti kódunk között. A kiterjesztett kulcsszó az, amit a Java használ az öröklés lehetővé tétele érdekében.
A fenti példánkban a gyermekosztály (narancssárga) kiterjeszti a szülőosztályt (gyümölcs). Ezért a gyümölcsosztály állapotát és viselkedését a narancs osztály most elérheti és módosíthatja.
A narancs osztályunk egyedi tulajdonsága a supremes változónévvel azonosítható (ez a narancsban található kis szegmensek hivatalos neve). Itt jön szóba a specializáció; nem minden gyümölcsnek vannak felsőbbrendűségei, de minden narancsnak van, így logikus a fenntartási változó fenntartása a narancsosztály számára.
A hámozási módszer hozzáadása a már meglévő étkezési és gyümölcslé-módszerekhez szintén logikus, mert bár nem minden gyümölcs hámozható, a narancsot gyakran meghámozzák.
Ne feledje, hogy ha nem szándékozunk megváltoztatni a meglévő étkezési és gyümölcslé -módszereket, akkor nem kell őket a narancs osztályunkba sorolnunk. A narancs osztály módszerei felülírják a gyümölcsosztály bármely hasonló módszerét. Tehát ha minden gyümölcsöt ugyanúgy fogyasztanánk és facsarnánk, akkor nem kell ezeket a módszereket a narancs osztályban létrehoznunk.
A szerepkonstruktorok öröklődésben játszanak
Alapértelmezés szerint a szülőosztály -konstruktorokat a gyermekosztályok öröklik. Ezért, ha gyermekosztály -objektum jön létre, ez azt jelenti, hogy a szülőosztály -objektum is automatikusan jön létre.
Visszatérve a példánkhoz, minden új narancssárga tárgy létrehozásakor gyümölcsobjektum is létrejön, mert a narancs gyümölcs.
A színfalak mögött, amikor gyermekosztály -objektum jön létre, a szülőosztály konstruktorát hívják meg először, majd a gyermekosztály konstruktorát. A fenti narancssárga gyermekosztályunkban, ha narancssárga objektumot hozunk létre paraméterek nélkül, akkor meghívjuk az alapértelmezett gyümölcsosztály -konstruktőrt, majd az alapértelmezett narancssárga osztályú vállalkozót.
A fenti elsődleges konstruktorunkban a szuper módszer szükséges, mert meghatározza, hogy a szülő gyümölcsosztály elsődleges konstruktorát - és ne az alapértelmezett konstruktort - kell meghívni, amikor egy paraméterekkel rendelkező narancssárga objektum jön létre.
Mostantól használhatja az öröklést a Java -ban
Ebből a cikkből megtudhatta, hogy mi az öröklődés, hogyan működik, és miért olyan fontos fogalom a programozás során. Mostantól a Java programozási nyelv használatával hozhatja létre öröklési kapcsolatait. Továbbá most már tudja, hogyan lehet megkerülni a Java egyetlen öröklési szabályát nagyszülői kapcsolat létrehozásával.
Képhitel: Andreas Wohlfahrt / Pexels
Részvény Részvény Csipog Email Hogyan lehet megszervezni az objektum-orientált kódot öröklésselAz objektumorientált programozás helyes beállítása azt jelenti, hogy tudnia kell az öröklődésről, és arról, hogyan lehet egyszerűsíteni a kódolást és csökkenteni a hibákat.
Olvassa tovább Kapcsolódó témák- Programozás
- Jáva
- Objektumorientált programozás
Kadeisha Kean Full Stack szoftverfejlesztő és műszaki/technológiai író. Megvan az a képessége, hogy leegyszerűsítse a legösszetettebb technológiai fogalmakat; olyan anyagot állít elő, amelyet minden technológiai kezdő könnyen megért. Szenvedélyesen ír, érdekes szoftvereket fejleszt és utazik a világban (dokumentumfilmeken keresztül).
Bővebben: Kadeisha KeanIratkozzon fel hírlevelünkre
Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!
Feliratkozáshoz kattintson ide