Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
74<br />
Methoden<br />
5: const double dEpsilon = 0.0001;<br />
6: double dArea = 0;<br />
7: if (Math.Abs((a*a + b*b – c*c)) > dEpsilon)<br />
8: {<br />
9: dArea = base.ComputeArea(a,b,c);<br />
10: }<br />
11: else<br />
12: {<br />
13: dArea = a*b/2.0;<br />
14: }<br />
15:<br />
16: return dArea;<br />
17: }<br />
18: }<br />
Für diese Prüfung wird die Formel von Pythagoras benutzt, die für rechtwinklige<br />
Dreiecke das Ergebnis 0 liefert. Auf ein von Null (und einem hier als Minimalwert<br />
eingeführten Epsilon) abweichendes Ergebnis reagiert die Methode mit dem<br />
Aufruf der Basisklassenvariante:<br />
dArea = base.ComputeArea(a, b, c);<br />
Der springende Punkt ist hier der Qualifizierer base, über den sich zu jedem Zeitpunkt<br />
Elemente der Basisklasse ansprechen lassen. Derartige Rückgriffe wird<br />
man vor allem dann einsetzen, wenn die Funktionalität der Basisklasse gefordert<br />
ist (die man in einer abgeleiteten Klasse natürlich nicht duplizieren möchte).<br />
5.2.3 Verbergen von Methoden<br />
Eine zweiter Weg zum Ersatz von Methoden besteht darin, die Bezeichner der<br />
Basisklasse zu verbergen. Diese Alternative ist unter anderem bei Ableitungen<br />
von Klassen nützlich, die Sie nicht selbst geschrieben haben (und deren Methoden<br />
unter Umständen das Schlüsselwort virtual fehlt). Sehen Sie sich einmal das<br />
folgende Listing an, stellen Sie sich dabei vor, BaseClass sei von jemand anderem<br />
geschrieben worden, und Sie wollten nun DerivedClass von dieser Klasse ableiten:<br />
Listing 5.6:<br />
Die abgeleitete Klasse implementiert eine in der Basisklasse nicht<br />
vorhandene Methode<br />
1: using System;<br />
2:<br />
3: class BaseClass<br />
4: {<br />
5: }<br />
6:<br />
7: class DerivedClass:BaseClass