enmannen Skrevet 31. mai 2002 Del Skrevet 31. mai 2002 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
Langbein Skrevet 31. mai 2002 Del Skrevet 31. mai 2002 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
DidzisK Skrevet 31. mai 2002 Del Skrevet 31. mai 2002 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
eivindbirkeland Skrevet 31. mai 2002 Del Skrevet 31. mai 2002 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
enmannen Skrevet 31. mai 2002 Forfatter Del Skrevet 31. mai 2002 Tusen takk folkens! Lenke til kommentar
eivindbirkeland Skrevet 31. mai 2002 Del Skrevet 31. mai 2002 Du kan evt. se f.eks. på java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#228745 hvis du vil lese mer. Eivind. [ Denne Melding var redigert av: eivindbirkeland på 2002-05-31 17:57 ] Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå