Gå til innhold

Definér overlasting av metoder


Anbefalte innlegg

Kan noen skrive en fin definisjon på:

Overlasting av metoder;

Overriding;

 

Vet egentlig hva det er, men har vanskelig for å definere det på en bra måte. (Har snart grunnkurs-eksamen i dette, og jeg tror vi kan få spørsmål om det)

 

Så hvis noen har lyst..

Lenke til kommentar
Videoannonse
Annonse

Method overloading betyr kort og godt at man i samme klasse kan definere flere metoder med samme navn, under forutsetning av at parametertypene eller antall parametre er forskjellig i hver. Dette er nødvendig for at kompilatoren skal skjønne hvilken metode som skal kalles.

 

Eks.

 

class Banner {

static void printBanner(String s) { blabla... }

static void printBanner(int i) { blabla... }

}

 

Som du ser heter begge metodene 'printBanner', men den ene tar en streng mens den andre tar et heltall som parameter, og Java er da "smart" nok til å skjønne hvilken metode som skal brukes.

 

Hvis Java ikke hadde støttet overloading av metoder (slik som enkelte andre språk), måtte du funnet på forskjellig navn på metodene, f.eks printBannerS eller printBannerString.

Lenke til kommentar

Jeg har bare erfaring med Delphi. Men slik jeg forstår det så:

 

1. Overload. Du har 2 eller mer metoder med samme navn (i samme klasse). Eneste forskjellen mellom metodene er forskjellige argumenter. Når du bruker metode i koden, compiler velger riktig metode basert på argumentene.

Delphi eksempel:

procedure VisFeil(AFeilKode:Integer);overload;

procedure Visfeil(AFeilTekst:String);overload;

 

Når du skriver VisFeil('I do not like your face'), procedure nummer 2 blir brukt.

 

2. Override. Du har metode definert i base class, som blir redefinert i ancestor.

 

type

TAnimal=class

public

procedure DoSound;virtual;

ens;

 

TDog=class(TAnimal)

public

procedure DoSound;override;

end;

 

TCat=class(TAnimal)

public

procedure DoSound;override;

end;

 

Du kan bruke DoSound på alle klasser som arver fra TAnimal, du trenger ikke å spesifisere hvilken class du har. Likevel får du forskjellige lyder fra hund og fra katt fordi DoSound har forskjellig implementasjon på hver av dem.

Lenke til kommentar

Quote:


Den 2002-05-31 14:53, DidzisK skrev:

2. Override. Du har metode definert i base class, som blir redefinert i ancestor.


Quote:


Du kan bruke DoSound på alle klasser som arver fra TAnimal, du trenger ikke å spesifisere hvilken class du har. Likevel får du forskjellige lyder fra hund og fra katt fordi DoSound har forskjellig implementasjon på hver av dem.


 

Riktig det du sier, men i Java heter det superclass og subclass.

 

Så - overriding; at en subklasse kan redefinere en metode i dens superklasse.

 

 

Eivind.

 

[ Denne Melding var redigert av: eivindbirkeland på 2002-05-31 15:01 ]

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...