130 likes | 203 Views
Osztály leszármaztatás. Protected, private, public, base stb. kulcsszavak. Osztályok és konstruktorok. Osztályok létrehozása és példányosítás, Származtatott osztály létrehozása és példányosítás. Osztály definiálása. Class kulcsszóval
E N D
Osztály leszármaztatás Protected, private, public, base stb. kulcsszavak
Osztályok és konstruktorok Osztályok létrehozása és példányosítás, Származtatott osztály létrehozása és példányosítás
Osztály definiálása • Class kulcsszóval • Amikor példányosítunk, először a konstruktor fut le mint metódus • Ha nem definiálunk konstruktort akkor is létezik, ha definiálunk, az új lesz érvényes • Először az ősosztály konstruktora fut le
Ősosztály, származtatott osztály • A származtatott osztály örökli az ősosztály metódusait és tagváltozóit • Először az ősosztály majd az alosztály konstruktora fut le A gyerek objektum éhes is lesz és alszik is. ősosztály származtatott osztály
Jancsika objektum (példányosítás) Főprogramban gyerek osztály példányosítása
Paraméteres konstruktor használata • Ha paraméteres az ősosztály konstruktora, akkor a paramétert származtatni kell az öröklött osztályban, azaz nem térhet el a két konstruktor szintaktikája • Konstruktor(paraméterek) = konstruktor(paraméterek) Őszosztály konstruktora Leszármazott osztály konstruktora gyerekek jancsika=newgyerekek("Tóth János");
Védelmi szintek Private Protected Public Internal
Public kulcsszó • Más osztályokból láthatóak az ilyen függvények és tagváltozók.
Private kulcsszó • Csakis az osztályon belül elérhető – ahol deklarálták . • Akkor használjuk általában, ha nem akarjuk, hogy egy más osztályból közvetlenül módosítani tudjanak egy property-t például vagy kiolvasni az értékét. Pl. az ember alszik állapotát nem akarom, hogy közvetlenül írják a főprogramból mint osztályból: Pl: objektum.alszik=true; Ezért elrejtem, és csak egy cselekvés módosíthatja ugyanazon osztályból.
Private kulcsszó • Folytatva az előző példát definiálok egy tagváltozót privát módon és elrejtem a külső osztályok számára. Ha befolyásolni akarják a változó értékeit, használniuk kell a felébreszt, elaltat metódusokat. Kiolvasáshoz az allapotkiolvas() metódust kell használniuk. publicclass emberek{ privatebool alszik=true; publicvoidaltat() {this.alszik=true; }publicvoidfelebreszt(){this.alszik=false;} } class Program{public static void Main(string[] args){ emberek x=new emberek(); x.altat(); x.felebreszt(); Console.WriteLine(this.allapotkiolvas()); } }
Private és Protected kulcsszó • Ha a gyerekek alosztályából akarom elérni a privát változót akkor az nem fog menni, se külső osztályból. • Az alsó ábrán a gyerek alosztály konstruktorából hívom meg a felébreszt() metódust. Kívülről ugyebár nem látható, így az objektumon majd nem tudom meghívni. Ha ez a metódus private lenne, akkor szintén nem érném el az alosztályból, csak az emberek ősosztályból. • Hát ezért egy megoldás maradt, hogy kívülről ne legyen látható, de alosztályból elérhető legyen: protected szó használata a felebreszt() metóduson, amit az ábrán nem látunk, de így lett létrehozva az ősosztályban a metódus.
Hol a hiba? Keresd meg ha van, gépi segítség nélkül !
1. példa publicclass emberek{publicstring név=""; privatevoid nagybetűsít() {this.név=this.név.ToUpper();} public emberek(string _név) {this.név=_név;this.nagybetűsít();}} publicclass gyerekek:emberek{public gyerekek(string _név):base(_név) {this.nagybetűsít(); } } class Program{publicstaticvoid Main(string[] args){gyerekek jancsika=newgyerekek("Tóth János");emberek felnott=newemberek("Nagy Aladár"); } }