Öröklési (Programming Guide c #), a Microsoft docs
Ebben a cikkben,
Öröklődés együtt tokozás és polimorfizmus egyik három fő jellemzői az objektum-orientált programozás. Az öröklődés lehetővé teszi, hogy hozzon létre új osztályok, hogy az újrahasználat, kiterjeszti és módosítja a meghatározott magatartást egy másik osztályba. Az osztály, amelynek tagjai öröklődnek az úgynevezett alap osztályban. egy osztályt, amely örökli azon tagjait hívják a származtatott osztály. A származtatott osztálynak csak egy közvetlen alap osztály. Azonban az öröklés tranzitív. Ha ClassC osztály származik ClassB és ClassB származik ClassA, ClassC örökli a tagok bejelentett ClassB és ClassA.
megjegyzés
A szerkezetek nem támogatják öröklés, de végre interfészek. További információért lásd. Az interfészek.
Elméletileg leszármazott osztály egy specializáció a kiindulási osztályban. Például, Animal alap osztály, előfordulhat, hogy egy származtatott osztály nevezett emlős. és az egyik származtatott osztály nevezett hüllő. Emlős egy állat, és a hüllő egy állat. de minden származtatott osztály különbözik specializációi az alap osztály.
Annak megállapítására, az osztály örökli másik osztály származtatott osztály egyértelműen kap minden tagja az alap osztály kivételével tervezők és befejezésének technikákat. A származtatott osztály így újra használható kódot az alap osztály, anélkül, hogy újra végrehajtani. A származtatott osztály további tagok. Így a származtatott osztály kiterjeszti a funkcionalitást az alap osztály.
Az alábbi ábrán az osztály WorkItem. képviselő munka tétel az üzleti folyamatokban. Mint más osztályokba, akkor származik System.Object és örökli az összes módszereit. A WorkItem öt saját tagjával. Ezek közé tartozik a kivitelező, mint konstruktor nem öröklődik. ChangeRequest osztály örökli WorkItem és képviseli, különös tekintettel a működtető tag. ChangeRequest hozzáteszi két tag a tagok örökölt WorkItem és Object. Meg kell hozzá a saját kivitelező, és azt is hozzáteszi originalItemID. originalItemID tulajdonság lehetővé teszi ChangeRequest kapcsolódó esetekben az eredeti tárgy WorkItem. amelyekre alkalmazzák a módosítási kérelmet.
A következő példa bemutatja, hogyan kell kifejezni C # osztály viszony, amint azt az előző ábrán. A példa azt mutatja, hogyan WorkItem felülbírálja virtuális módszer, és hogyan Object.ToString ChangeRequest WorkItem osztály örökli az eljárás megvalósítására.
Kivonat és virtuális módszerek
Amikor egy alap osztály kijelenti eljárás virtuális. származtatott osztály felülbírálhatja a módszer segítségével a saját megvalósítás. Ha a szülő osztály tagja kijelenti, mint egy absztrakt. ezt a módszert kell felülbírálni bármely nem absztrakt osztály, amely örökli közvetlenül ezt az osztályt. Ha a származtatott osztály maga elvont, absztrakt örökli tagok nélkül megvalósítását. Absztrakt és virtuális tagjai az alapja a polimorfizmus, amely a második legfontosabb jellemzője az objektum-orientált programozás. További információért lásd. Polimorfizmusa ebben a szakaszban.
Abstract alaposztályok
Akkor nyilvánítja egy osztály absztrakt. Ha azt szeretnénk, hogy megakadályozzák a közvetlen példányosítás a kulcsszó új. Ezzel a megközelítéssel, az osztály csak akkor használható, ha az új osztály származik belőle. Egy absztrakt osztály tartalmazhat egy vagy több módszerrel aláírást, amelyek maguk nyilvánították elvont. Ezek az aláírások határozzák meg a paramétereket és visszatérési érték, de nincs végrehajtás (módszer body). Absztrakt osztályok nem feltétlenül tartalmaznak absztrakt tagjai; Azonban, ha az osztály még mindig tartalmaz egy absztrakt tagja, az osztály maga kell deklarálni elvont. Származtatott osztályok, amelyek maguk nem elvont kell adnia a végrehajtás minden absztrakt módszerek elvont alap osztály. További információkat. Lásd: absztrakt és a Sealed osztályok és osztály tagjai.
interfészek
Az interfész egy referencia típus valami hasonló elvont alap osztály, amely csak elméleti tagjai. Ha egy osztály megvalósítja az interfészt, az osztály köteles végrehajtása az összes interfész tagjai. Egy osztály több interfész lehet végrehajtani, bár származhat egyetlen közvetlen alap osztály.
Interfészek meghatározásához használt specifikus lehetőségeket osztályok, amelyek nem feltétlenül a kapcsolat az identitás. Például, System.IEquatable interfész
Megakadályozza a további öröklés
Egy osztály megakadályozzák öröklés más osztályokba vagy öröklési bármely tagját, kijelentve magukat tagjai vagy lezárjuk. További információkat. Lásd: absztrakt és a Sealed osztályok és osztály tagjai.