1 / 13

Osztály leszármaztatás

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

reed-gamble
Télécharger la présentation

Osztály leszármaztatás

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Osztály leszármaztatás Protected, private, public, base stb. kulcsszavak

  2. 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

  3. 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

  4. Ő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

  5. Jancsika objektum (példányosítás) Főprogramban gyerek osztály példányosítása

  6. 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");

  7. Védelmi szintek Private Protected Public Internal

  8. Public kulcsszó • Más osztályokból láthatóak az ilyen függvények és tagváltozók.

  9. 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.

  10. 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()); } }

  11. 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.

  12. Hol a hiba? Keresd meg ha van, gépi segítség nélkül !

  13. 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"); } }

More Related