1. Hvaler og køer
Her er et interessant zoologisk faktum: en ko er meget tættere på en hval end for eksempel på en flodhest. Det viser sig, at køer og hvaler er relativt nære slægtninge.

Se her. Lad os fortælle dig om polymorfi - et andet meget kraftfuldt værktøj til OOP . Den har fire funktioner.
2. Arv er ikke et vidundermiddel
Forestil dig, at du har skrevet en Cow
klasse til et spil. Det har mange felter og metoder. Objekter i denne klasse kan gøre forskellige ting: gå, spise og sove. Køer bærer også en klokke, der ringer, når de går. Antag, at du har implementeret alt i klassen til mindste detalje.
Og så kommer din klient og siger, at hun vil udgive et nyt spilniveau, hvor al handling foregår på havet, og hovedpersonen er en hval.
Du begynder at designe en Whale
klasse og indser, at den kun er lidt anderledes end Cow
klassen. Logikken i begge klasser er meget ens, og du beslutter dig for at bruge arv.

Klassen Cow
er ideel til at påtage sig rollen som forældreklassen: den har alle de nødvendige variabler og metoder. Alt, hvad vi skal gøre, er at give hvalen evnen til at svømme. Men der er et problem: din hval har ben, horn og en klokke. Denne funktionalitet er trods alt implementeret inde i Cow
klassen. Hvad kan man gøre her?

3. Metodetilsidesættelse
Metodetilsidesættelse kommer os til undsætning. Hvis vi har arvet en metode, der ikke helt gør, hvad vi ønsker i vores nye klasse, kan vi erstatte den metode med en anden.

Hvordan gøres dette? I vores efterkommerklasse erklærer vi den samme metode som metoden for den overordnede klasse, som vi ønsker at tilsidesætte. Vi skriver vores nye kode i den. Og det er det — det er, som om den gamle metode i forældreklassen simpelthen ikke eksisterer.
Sådan fungerer det:
Kode | Beskrivelse |
---|---|
|
|
|
Denne kode viser følgende tekst på skærmen:
|
|
Denne kode viser følgende på skærmen:
|
Efter at have arvet Cow
klassen og tilsidesat printName
metoden, Whale
indeholder klassen faktisk følgende data og metoder:
|
Vi kender ikke til nogen gammel metode. |
GO TO FULL VERSION