Previous achievement | Next achievement

( B. Arv )

B5

Överlagring och overriding

Level Assessment
3 L

Visa att du kan använda både överlagring och overriding på lämpligt sätt.

Överlagring (overloading) av operatorer, funktioner, metoder och konstruktorer sker när de har samma namn, men olika typer på sina inparametrar, d.v.s. de har olika signatur. Ett klassiskt exempel på överlagring är +-operatorn som fungerar olika beroende på typer: "1" + "2" konkatenerar två strängar (resultatet blir strängen "12"), medan 1 + 2 adderar två heltalsliteraler (resultatet blir heltalet 3).

Specialisering (overriding) av metoder och konstruktorer sker när en subklass tillhandahåller en konstruktor med samma signatur. Se motsvarande mål för metodspecialisering. En skillnad mellan metodspecialisering och konstuktorspecialisering i Java är att i fallet konstruktorer måste åtminstone en konstruktor anropas per klass i en klasshierarki, d.v.s. om klassen Hus är en subklass till Egendom måste alla konstruktorer i Hus anropa en konstruktor i Egendom (givet att en sådan finns). Notera att ett sådant anrop måste stå först i konstruktorn eftersom objekt initieras i stigande specialiseringsordning, d.v.s. mest generella klass först (alla delar som hör till Object), sedan näst mest generella (Egendom i föreliggande exempel) och sist det mest specifika (här Hus).

Ge gärna kommentarer och rapportera buggar (klicka på den senaste commiten)

Edit | Back