1. Walvissen en koeien
Hier is een interessant zoölogisch feit: een koe staat veel dichter bij een walvis dan bijvoorbeeld bij een nijlpaard. Het blijkt dat koeien en walvissen relatief naaste verwanten zijn.
Kijk hier. Laten we je vertellen over polymorfisme - nog een zeer krachtig hulpmiddel van OOP . Het heeft vier kenmerken.
2. Overerving is geen wondermiddel
Stel je voor dat je een les hebt geschreven Cow
voor een spel. Het heeft veel velden en methoden. Objecten van deze klasse kunnen verschillende dingen doen: lopen, eten en slapen. Koeien dragen ook een bel die rinkelt als ze lopen. Stel, je hebt alles in de klas tot in het kleinste detail geïmplementeerd.
En dan komt je klant en zegt dat ze een nieuw spelniveau wil uitbrengen, waarin alle actie op zee plaatsvindt en de hoofdpersoon een walvis is.
Je begint met het ontwerpen van een Whale
klas en realiseert je dat deze maar een klein beetje verschilt van de Cow
klas. De logica van beide klassen lijkt erg op elkaar en u besluit overerving te gebruiken.
De Cow
klasse is ideaal om de rol van de ouderklasse op zich te nemen: het heeft alle noodzakelijke variabelen en methoden. Het enige wat we moeten doen is de walvis de mogelijkheid geven om te zwemmen. Maar er is een probleem: je walvis heeft poten, hoorns en een bel. Deze functionaliteit is immers binnen de Cow
klas geïmplementeerd. Wat kan hier worden gedaan?
3. Methode overschrijven
Methode negeren komt ons te hulp. Als we een methode hebben geërfd die niet helemaal doet wat we willen in onze nieuwe klasse, kunnen we die methode vervangen door een andere.
Hoe wordt dit gedaan? In onze afstammelingenklasse declareren we dezelfde methode als de methode van de bovenliggende klasse die we willen overschrijven. We schrijven onze nieuwe code erin. En dat is het - het is alsof de oude methode in de bovenliggende klasse gewoon niet bestaat.
Dit is hoe het werkt:
Code | Beschrijving |
---|---|
|
|
|
Deze code toont de volgende tekst op het scherm:
|
|
Deze code geeft het volgende weer op het scherm:
|
Na het erven van de Cow
klasse en het negeren van de printName
methode, Whale
bevat de klasse feitelijk de volgende gegevens en methoden:
|
We kennen geen enkele oude methode. |
GO TO FULL VERSION