osztály leszármaztatás

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

Upload: reed-gamble

Post on 30-Dec-2015

72 views

Category:

Documents


1 download

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

TRANSCRIPT

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

}

}