Page 15 : 41
Forelæsningsnoter i Objekt-orienteret Programmering
Nedarvning
* Specialisering og udvidelse
Specialisering
Eksempel på specialiseringer af Konto
Specialisering og ekstension
Eksempel på specialiseringer af Figur
Udvidelse
Udvidelse og intension
Eksempel på udvidelse: Pair til Triple
* Nedarvning
Nedarvning
Alternativ til nedarvning: Kopiering
Alternativ til nedarvning: Delegering
Nedarvning i Java
Eksempel på nedarvning: CheckKonto
Checkkonto er både en udvidelse og en specialisering af Konto
Eksempel på nedarvning: Triple
Eksempel på nedarvning: DoubleLinkable
Instantiering og initialisering
Nedarvning og konstruktorer i Java
Grænseflader til klienter og subklasser i forbindelse med nedarvning
Nedarvning og synlighed i Java
Forhindring af nedarvning i Java
* Klassehierarkier
Nedarvning og dannelse af klassehierarkier
Dannelse af klassehierarkier i Java
* Polymorfi og dynamisk binding
Statiske og dynamiske typer
Polymorfi og typesammenlignelighed
Statisk og dynamisk binding
Statisk og dynamisk binding i Java
Polymorfi og dynamisk binding i Banken
Eksemplet uden dynamisk binding
Fordele ved dynamisk binding
* Metode redefinition og -kombination
Redefinition af metoder og variable
Forhinding af redefinition
Varians af parametre og returværdi under redefinition
Covarians og contravarians
Metodekombination
* Terminologi
Nedarvningsterminologi
Checkkonto er både en udvidelse og en specialisering af Konto
Vi understreger her at nogle klasser både kan opfattes som en udvidelse og en specialisering af den oprindelige superklasse
Vi gentager her nedarvningshierarkiet for klassen Konto
Udvidelse
Specialisering
CheckKonto er en udvidelse af klassen Konto
CheckKonto er en specialisering af klassen Konto
Intensionen af CheckKonto vokser med variablen checkNummer og metoden hævCheck
Ekstensionen af CheckKonto skrumper i forhold til ekstensionen af Konto, idet nogle Konto objekter ikke er checkkonti
Opgave om kvadrater i forhold til rektangler