13
OSZTÁLY LESZÁRMAZTATÁS Protected, private, public, base stb. kulcsszavak

Osztály leszármaztatás

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Osztály leszármaztatás

OSZTÁLY LESZÁRMAZTATÁSProtected, private, public, base stb. kulcsszavak

Page 2: Osztály leszármaztatás

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ályok és konstruktorok

Page 3: Osztály leszármaztatá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

Page 4: Osztály leszármaztatás

Ő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

ősosztály származtatott osztály

A gyerek objektum éhes is lesz és

alszik is.

Page 5: Osztály leszármaztatás

Jancsika objektum (példányosítás)

Főprogramban gyerek osztály példányosítása

Page 6: Osztály leszármaztatás

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)

gyerekek jancsika=new gyerekek("Tóth János");

Őszosztály konstruktora Leszármazott osztály konstruktora

Page 7: Osztály leszármaztatás

PrivateProtectedPublicInternal

Védelmi szintek

Page 8: Osztály leszármaztatás

Public kulcsszó

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

Page 9: Osztály leszármaztatás

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.

Page 10: Osztály leszármaztatás

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.

public class emberek{

private bool alszik=true;

public void altat()      {        this.alszik=true;      }        

public void felebreszt()      {

this.alszik=false;      }}

class Program{

public static void Main(string[] args){

emberek x=new emberek();x.altat();x.felebreszt();

Console.WriteLine(this.allapotkiolvas());}

}

Page 11: Osztály leszármaztatás

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.

Page 12: Osztály leszármaztatás

Keresd meg ha van, gépi segítség nélkül !

Hol a hiba?

Page 13: Osztály leszármaztatás

1. példa

public class emberek{  public string név="";

 private void nagybetűsít()   {     this.név=this.név.ToUpper();    }

   public emberek(string _név)        

  {     this.név=_név;     this.nagybetűsít();   }}

public class gyerekek:emberek{ public gyerekek(string _név):base(_név) {  this.nagybetűsít(); }

}

class Program{public static void Main(string[] args){gyerekek jancsika=new gyerekek("Tóth János");emberek felnott=new emberek("Nagy Aladár");

}

}