Kingston_Pendrive/Suli/12.b/Programozás (Tusjak Brigitta)/Elmélet/2023. 11. 27.txt

47 lines
2.8 KiB
Plaintext
Raw Normal View History

2024-11-19 18:04:02 +00:00
Osztályok öröklődése
Az öröklődés az objektumorientált programozás elsődleges jellemzője. Egy osztályt származtathatunk egy ősosztálybók, és ekkor az utódosztály az ősosztály tulajdonságait (függvények...) is sajátjának tudhatja. Az örökölt függvények közül a változtatásra szorulókat újradefiniálhatjuk. Öröklés esetén az osztály definiációjának formája a következő:
class utódnév: ősnév
{
...
}
Minden mező automatikusan, mintha publikus öröklés lenne, megtartja osztálybeli jelentését. Ekkor az ősosztály publikus mezői az utódosztályban is publikus mezők, és a protected mezők az utódosztályban is protected mezők lesznek. Az ősosztály privát mezői az utódosztályban is privát mezők maradnak az ősosztályra nézve is, így az ősosztály privát mezői közvetlenül az utódosztályból sem érhetők el. AZ elérésük például publikus, ún. "közvetítő" függvény segítségével valósítható meg. Egy őstípusú referencia bármely utódtípusra hivatkozhat.
Az elérési módok gyakorlati jelentését nézzük meg egy sematikus példán keresztül:
class ős
{
private int i;
protected int j;
public int k;
public void f (int j)
{
i=j
}
}
class utód: ős
{
...
}
Ekkor az utódosztálynak "helyből" lesz egy protected mezője, egy j egész változó, és lesz két publikus mezője, a k egész változó és az f függvény. Természetesen az utódosztálynak lesz egy i egészmezője is, csak az közvetlenül nem lesz elérhető.
A C# nyelvben nincs lehetőségünk többszörös öröklés segítségével egyszerre több ősosztályból egy utódosztályt származtatni. Helyette viszont tetszőleges számú interface-t implementálhat minden osztály.
class utód: ős, interface1, ... {
...
}
Konstruktorok és destruktorok használata öröklés esetén is megengedett. Egy típus definiálásakor a konstruktor függvény kerül meghívásra, és ekkor először az ősosztály konstruktora, majd utána az utódosztály konstruktora kerül meghívásra, míg destruktor esetén fordítva, először az utódosztály, majd az ősosztály destruktorát hÍvja meg a rendszer. Természetesen a destruktor hívására az igaz, hogy a keretrendszer hívja meg valamikor azután, hogy az obbjektumok élettartama megszűnik.
Paraméteres konstruktorok esetén az utódkonstruktor alakja:
utód (paraméterek): base (paraméterek)
{
...
}
Többszíntű öröklés esetén először az őskonstruktorok kerülnek a definíció sorrendjében végrehajtásra, majd az utódbeli tagosztályok konstruktorai és legvégül az utódkonstruktor következik. A destruktorok hívásának sorrendje a konstruktorsorrendhez képest fordított. Ha nincs az utódban direkt őshívás, akkor a rendszer a paraméter nélküli őskonstruktorát hívja meg.