Turinys:
Apibrėžimas - ką reiškia išvestinė klasė?
Išvestinė klasė C # kontekste yra klasė, sukurta arba gauta iš kitos egzistuojančios klasės. Esama klasė, iš kurios išvestinė klasė sukuriama paveldėjimo būdu, yra žinoma kaip bazinė arba super klasė.
Paveldėjusi iš bazinės klasės, išvestinė klasė netiesiogiai paveldi visus narius (išskyrus konstruktorius ir destruktorius), kuriuos ji pakartotinai panaudoja, praplečia ir modifikuoja bazinės klasės elgesį. Išvestinė klasė viršija bazinės klasės savybes ir metodus, kad ji atspindėtų specializuotą bazinės klasės versiją. C # suteikia galimybę nepaisyti ir slėpti išvestinės klasės pagrindinės klasės metodus, todėl abi klasės gali laisvai vystytis ir išlaikyti dvejetainį suderinamumą.
„Techopedia“ paaiškina išvestinę klasę
Štai keletas išvestinių klasių C # ypatybių:
- Kaip „Java“ ir, skirtingai nei „C ++“, išvestinė klasė negali turėti daugiau nei vienos bazinės klasės, bet gali būti išvesta iš daugiau nei vienos sąsajos. Tačiau ji paveldi visus savo tėvų bazinių klasių narius, deklaruojamus paveldėjimo hierarchijoje, dėl paveldėjimo pereinamojo pobūdžio
- Prieigos modifikatoriai, naudojami išvestinės klasės deklaracijos pareiškime, nurodo leidimus naudoti jos bazinės klasės narius
- Kodas išvestinės klasės konstruktoriuje, kuris vykdomas ją kuriant, bus vykdomas tik įvykdžius pagrindinės klasės konstruktorių
- Išvestinė klasė turi naudoti modifikatorių „nepaisyti“, kad deklaruotų virtualų metodą (deklaruojamą jo pagrindinėje klasėje su „virtualiu“ raktiniu žodžiu), kuris turi būti nepaisomas. Negalima atmesti tik egzempliorių metodų ir savybių
- Išvestinė klasė gali turėti naują metodą, kuris paslepia bazėje deklaruojamą virtualų metodą (su panašiu parašu), naudodamas raktinį žodį „naujas“. Norėdami gauti pagrindinės klasės metodą iš išvestinės klasės, galima naudoti raktinį žodį „bazinis“
- Klasė gali užkirsti kelią išvedimui, paskelbdama ją „sandariu“ ir negali būti naudojama kaip pagrindinė klasė
- Išvestinė klasė, kurios pagrindinė klasė yra abstrakčioji klasė, gali būti realizuota, jei išvestinė klasė nėra paskelbta abstrakčia, o išvestinė klasė turi visus abstrakčius metodus, deklaruojamus bazinėje klasėje.
