Een introductie tot Object Georiënteerd Programmeren |
Overerven Een heel belangrijk onderdeel van OOP is het overerven. Ik heb het er al kort over gehad in de introductie. Het komt er in feite op neer dat men een basisklasse kan ontwerpen voor meerdere klassen. Er zijn ongelofelijk veel zoogdieren, ze delen allemaal bepaalde eigenschappen, maar er zijn ook genoeg verschillen. De gemeenschappelijke eigenschappen behoren in de basisklasse. De eigenschappen die bij een bepaald dier horen zet u in een afgeleide klasse. Voor de basisklasse wordt ook wel de term Parent(Ouder) gebruikt en voor de afgeleide klasse Child(Kind). Hier zien we een voorbeeld van een parent en child.
Hier zien we de basisklasse ZoogDier en de afgeleide klasse Olifant. Door Olifant af te leiden van de klasse ZoogDier, kunnen we de publieke methodes Adem en Eet aanroepen vanuit een instantie van Olifant. U kunt ook publieke variabelen van de klasse ZoogDier raadplegen(als ze bestonden). Privé methoden en variabelen zijn vanuit de klasse Olifant niet te bereiken. Wilt u variabelen en methoden toch afschermen van de buitenwereld en tergelijkertijd ervoor zorgen dat de methoden/variabelen aanspreekbaar zijn in een afgeleide klasse dan moet u de toegangsspecificate beschermd(Engels: protected) gebruiken. Hier een voorbeeld:
VogelNaam en AantalWaarnemingen zijn afgeschermd van de buitenwereld en kunnen alleen in een instantie van Vogel of Meeuw worden opgevraagd. De afgeleide klasse meeuw heeft een methode Leef die Eet() en Adem() aanroept. Dit is volkomen legaal aangezien Eet() en Adem() beschermde methoden van Vogel zijn. Zouden deze methodes privé zijn, dan zou hier een fout optreden. De methode Leef() behoort niet tot de klasse Vogel. (Bijna) elk dier beweegt zich voort, maar niet alle dieren doen dit op dezelfde manier. In OOP kunt u daarom de basis van het bewegen vastleggen in een methode, en in de afgeleide klassen deze methode uitbreiden:
Hier ziet u hoe we de methodes overstemmen(Engels: to override), zo zal de methode BeweegVleugels() worden aangeroepen als u een vogel laat bewegen. En als u een olifant laat bewegen zal de methode Stamp worden aangeroepen. BasisKlasse.Beweeg() wordt gebruikt om de code in de methode Beweeg() van de basisklasse uit te voeren. De code van de basisklasse aanroepen is niet noodzakelijk. Vorige - Volgende |