osztály leszármaztatás
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 PresentationTRANSCRIPT
OSZTÁLY LESZÁRMAZTATÁSProtected, private, public, base stb. kulcsszavak
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
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
ősosztály származtatott osztály
A gyerek objektum éhes is lesz és
alszik is.
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)
gyerekek jancsika=new gyerekek("Tóth János");
Őszosztály konstruktora Leszármazott osztály konstruktora
PrivateProtectedPublicInternal
Védelmi szintek
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.
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());}
}
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.
Keresd meg ha van, gépi segítség nélkül !
Hol a hiba?
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");
}
}