1. Hval og kyr
Her er et interessant zoologisk faktum: en ku er mye nærmere en hval enn for eksempel en flodhest. Det viser seg at kyr og hval er relativt nære slektninger.
Se her. La oss fortelle deg om polymorfisme - et annet veldig kraftig verktøy for OOP . Den har fire funksjoner.
2. Arv er ikke et universalmiddel
Tenk deg at du har skrevet en Cow
klasse for et spill. Den har mange felt og metoder. Objekter i denne klassen kan gjøre forskjellige ting: gå, spise og sove. Kyr har også en bjelle som ringer når de går. Anta at du har implementert alt i klassen til minste detalj.
Og så kommer klienten din og sier at hun vil gi ut et nytt spillnivå, der all handlingen foregår til sjøs, og hovedpersonen er en hval.
Du begynner å designe en Whale
klasse og innser at den bare er litt forskjellig fra Cow
klassen. Logikken til begge klassene er veldig lik, og du bestemmer deg for å bruke arv.
Klassen Cow
er ideell for å påta seg rollen som foreldreklassen: den har alle nødvendige variabler og metoder. Alt vi trenger å gjøre er å gi hvalen evnen til å svømme. Men det er et problem: hvalen din har bein, horn og en bjelle. Tross alt er denne funksjonaliteten implementert inne i Cow
klassen. Hva kan gjøres her?
3. Metodeoverstyring
Metodeoverstyring kommer oss til unnsetning. Hvis vi har arvet en metode som ikke helt gjør det vi ønsker i vår nye klasse, kan vi erstatte den metoden med en annen.
Hvordan gjøres dette? I vår etterkommerklasse erklærer vi den samme metoden som metoden til den overordnede klassen som vi ønsker å overstyre. Vi skriver vår nye kode i den. Og det er det — det er som om den gamle metoden i foreldreklassen rett og slett ikke eksisterer.
Slik fungerer det:
Kode | Beskrivelse |
---|---|
|
|
|
Denne koden viser følgende tekst på skjermen:
|
|
Denne koden viser følgende på skjermen:
|
Etter å ha arvet Cow
klassen og overstyrt printName
metoden, Whale
inneholder klassen faktisk følgende data og metoder:
|
Vi vet ikke om noen gammel metode. |