LKG/Inf 11 2011/Vererbung
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal</language>
=== Vorraussetzung ===
Vorraussetzung für Vererbung ist eine Hierarchie:
[[Bild:Mschubert_Grafik_oop_hierarchie_figur_zu_rechteck.png]]
* die Nachkommen einer Klasse erben automatisch Datenfelder und Methoden
* des Nachfolgers Methoden können verändert werden
* auch neue Methoden und Datenfelder sind möglich
* die beerbte(vererbende ._.) Klasse heißt "Elternklasse" - sie vererbt an die "Kindklasse"
=== Syntax ===
-> Name der Elternklasse in Klammern (TNameElternKlasse)
<code id="5137030896295">type
TNameKlasse2 = class(TNameElternKlasse)</code>
'''Bsp (Auszüge):'''
<code id="51370308962fd">type
TFigur=class
function ausgabe:string;
end;
TPunkt=class(TFigur)
x,y:integer;
constructor create(x_neu,y_neu : integer);
function getx:integer;
function gety:integer;
function zeige:string;
end;
TKreis=class(TPunkt)
r: integer;
constructor create(x_neu,y_neu,r_neu : integer);
function getr:integer;
function zeige:string;
end;
TQuadrat=class(TPunkt)
a:integer;
end;
TRechteck=class(TQuadrat)
b:integer;
end;</code>
=== Initialisieren ===
Wie gewohnt in zwei Schritten (Deklaration und Initialisierung):
<code id="5137030896357">var
p1:tpunkt;
p2:tpunkt;
p3:tpunkt;
k1:tkreis;
r1:trechteck;
...
p1:=tpunkt.create(1,1);
p2:=tpunkt.create(2,6);
p3:=tpunkt.create(1,7);
k1:=tkreis.create(2,4,3);
r1:=trechteck.create(5,5,2,3);</code>
* tkreis-Definition enthält nur r (Radius), kann aber auch x und y nutzen (Erbung von Datenfeldern)
* Erbung von Methoden: Edit1.Text:=k1.ausgabe;
Neben '''private''' und '''public''' gibt es nun noch '''protected''': Während private die Nutzung von Methoden für Nachfolgerklassen untersagt, dürfen die Kindklassen bei protected diese Verwenden.