Hovedforskjell : Overbelastning betyr å ha to metoder i samme klasse med samme navn og med forskjellige parametertyper, mens overstyring betyr å ha to forskjellige metoder i samme klasse med samme parametertyper, men med forskjellige implementeringer.
Metoder som overstyrer og overbelastning er to konsepter eller teknikker som brukes i Java-programmeringsspråk. Begge konseptene tillater programmerer å gi forskjellige implementeringer for metoder under samme navn. Denne artikkelen skiller mellom de to begrepene for programmering.
Funksjon overbelastning eller overbelastning av metoden gjør det mulig å opprette flere metoder under samme navn, i samme klasse, men forskjellig fra hverandre i inngang og utskriftstype av funksjonen. Det er ganske enkelt definert som evnen til en funksjon til å utføre forskjellige oppgaver.
Ved overbelastning deler metoden implementeringer samme navn fordi de utfører lignende oppgaver. Overbelastning betraktes også som polymorf i naturen. Funksjonene som har forskjellige implementeringer er avhengig av deres spesifiserte argumenttyper. Det er vanligvis forbundet med statiske programmeringsspråk som styrker typen sjekker inn funksjonssamtaler. Det anses også praktisk fordi det lar programmereren skrive en rekke forskjellige metoder i samme klasse. Ved overbelastning endrer kjørerprosessoren navnet på alle overbelastede metoder, noe som kan være et problem.
Metode overstyring, i objektorientert programmering, er en funksjon som tillater en underklasse eller klasse for å gi en spesifikk implementering av en metode som allerede er gitt av en av sine superklasser eller foreldreklasser. Gjennomføringen i underklasse overstyrer eller erstatter implementeringen i foreldreklassen ved å gi en metode under samme navn, samme parametere eller signatur, og samme returtype som metoden i foreldreklassen.
Ved overordnet metode er funksjonene kodet for å utføre bestemte oppgaver i et program. Overstyring avhenger av tilstedeværelsen av en baseklassefunksjon for utseendet. Her bestemmes den utførte funksjonen av objektet som brukes til å påkalle det, dvs. hvis et objekt av en foreldreklasse brukes til å påkalle metoden, vil funksjonen i foreldreklassen bli utført. Overstyring er polymorf i naturen; det bidrar til å designe programmer basert på den første implisitte parameteren, som kan løses ved kjøring. Det er noen språk i Java, tillater en programmerer å forhindre at en metode overstyres.
Sammenligning mellom overbelastning og overstyring:
overbelastning | Overstyre | |
Definisjon | Det betyr å ha metoder av samme klasse under samme navn, men hver metode har forskjellige parametere eller har samme parametere med forskjellige typer og ordre. | Det betyr å ha en underklasse med samme metoder under samme navn og nøyaktig samme type parametere og samme returtype som en superklasse. |
Betydning | Det betyr at mer enn én metode deler samme navn i samme klasse, men har en annen signatur. | Det betyr at metoden i grunnklassen er omdefinert i den avledede klassen med samme signatur. |
Oppførsel | Det legger til eller strekker seg til metodene atferd. | Det endrer den eksisterende oppførselen til en metode. |
polymorfisme | Det er en kompileringstidspolymorfisme. | Det er en løpstidspolymorfisme. |
Statisk metode | Den statiske metoden kan overbelastes. | Den statiske metoden kan ikke overskrides. |
Knytte bånd | Statisk obligasjon. | Dynamisk binding. |
Arv | Det kan eller ikke krever arv. | Det krever alltid arv. |
assosiasjon | Det er vanligvis knyttet til statiske programsprog. | Det er vanligvis knyttet til objektorienterte programmer. |
Signatur | Metoder har forskjellig signatur. | Metoder må ha samme signatur. |
Hastighet | Det er raskere enn tvingende. | Det er sakte i forhold til overbelastning. |
klasser | Det krever ikke mer enn én klasse for overbelastning. | Det krever minst to klasser for overbelastning. |
Nivå | Metoder kan ha tilgangsnivå. | Metoder har samme eller brede tilgangsnivå. |
Eksempel | Klasse Legg til { int sum (int a, int b) { returnere a + b; } int sum (int a) { returnere a + 10; } } | Klasse A // Superklasse { tomt display (int num) { skrive ut num; } } // Klasse B arver klasse A Klasse B // Underklasse { tomt display (int num) { skrive ut num; } } |