Obsah:
Definícia - Čo znamená odvodená trieda?
Odvodená trieda v kontexte C # je trieda vytvorená alebo odvodená z inej existujúcej triedy. Existujúca trieda, z ktorej sa odvodená trieda vytvorí na základe dedičnosti, sa nazýva základná alebo supertrieda.
Pri dedení zo základnej triedy odvodená trieda implicitne dedí všetkých členov (okrem konštruktorov a deštruktorov), ktoré znova používa, rozširuje a upravuje správanie základnej triedy. Odvodená trieda prepíše vlastnosti a metódy základnej triedy tak, aby predstavovala špecializovanú verziu základnej triedy. C # poskytuje schopnosť potlačiť a skryť metódy základnej triedy v odvodenej triede, vďaka ktorej sa obe triedy voľne vyvíjajú a udržiavajú binárnu kompatibilitu.
Techopedia vysvetľuje odvodenú triedu
Nasledujú niektoré z funkcií odvodených tried v C #:
- Podobne ako v Java a na rozdiel od C ++, odvodená trieda nemôže mať viac ako jednu základnú triedu, ale môže byť odvodená z viac ako jedného rozhrania. Dedí však všetkých členov svojich materských základných tried deklarovaných v hierarchii dedičstva z dôvodu tranzitívnej povahy dedičstva.
- Modifikátory prístupu použité vo vyhlásení o odvodenej triede určujú povolenia na používanie členov jej základnej triedy
- Kód v konštruktore odvodenej triedy, ktorý sa vykonáva pri jeho vytvorení, sa vykoná až po vykonaní konštruktora základnej triedy.
- Odvodená trieda musí použiť modifikátor 'override' na deklarovanie virtuálnej metódy (deklarovanej vo svojej základnej triede s 'virtuálnym' kľúčovým slovom), ktorá musí byť prepísaná. Prepísať sa dajú iba metódy a vlastnosti inštancie
- Odvodená trieda môže mať novú metódu, ktorá skryje virtuálnu metódu deklarovanú v základni (s podobným podpisom) pomocou kľúčového slova „new“. Na prístup k metóde v základnej triede z odvodenej triedy sa môže použiť kľúčové slovo „base“
- Trieda môže zabrániť derivácii jej vyhlásením za „zapečatené“ a nemôže sa použiť ako základná trieda
- Odvodená trieda so základnou triedou ako abstraktnou triedou môže byť vytvorená na inštancii, ak odvodená trieda nie je deklarovaná ako abstraktná a odvodená trieda má implementáciu pre všetky abstraktné metódy deklarované v základnej triede.