Hovedforskel : Overbelastning betyder at have to metoder i samme klasse med samme navn og med forskellige parametertyper, mens overstyring betyder to forskellige metoder i samme klasse med de samme parametertyper, men med forskellige implementeringer.
Metoderne overstyring og overbelastning er to begreber eller teknikker, der anvendes i java programmeringssprog. Begge koncepter giver programmereren mulighed for at give forskellige implementeringer til metoder under samme navn. Denne artikel skelner mellem de to begreber for programmering.
Funktionsoverbelastning eller overbelastning af metoden gør det muligt at oprette flere metoder under samme navn, i samme klasse, men forskellige fra hinanden i indgangs- og udgangstypen af funktionen. Det er simpelthen defineret som en funktions evne til at udføre forskellige opgaver.
Ved overbelastning deler metoden implementeringer samme navn, fordi de udfører lignende opgaver. Overbelastning betragtes også som polymorf i naturen. Funktionerne, der har forskellige implementeringer, afhænger af deres specificerede argumenttyper. Det er normalt forbundet med statiske programmeringssprog, som håndhæver typekontrol i funktionsopkald. Det anses også for praktisk, da det giver programmereren mulighed for at skrive en række forskellige metoder i samme klasse. Ved overbelastning ændrer runtime-processoren navnet på alle de overbelastede metoder, hvilket kan være et problem.
Metode overordnet i objektorienteret programmering er en funktion, der tillader en underklasse eller klasse for at tilvejebringe en specifik implementering af en metode, der allerede er tilvejebragt af en af dens superklasser eller forældreklasser. Implementeringen i underklassen tilsidesætter eller erstatter implementeringen i forældrenes klasse ved at give en metode med samme navn, samme parametre eller signatur og samme returtype som metoden i forældersklassen.
Ved overordnet metode er funktionerne kodet til at udføre specifikke opgaver i et program. Overstyring afhænger af tilstedeværelsen af en baseklassefunktion for dens udseende. Her bestemmes den udførte funktion af det objekt, der bruges til at påberåbe sig det, dvs. hvis et objekt af en forældersklasse bruges til at påberåbe sig metoden, vil funktionen i forældrenes klasse blive udført. Overordnet er polymorf i naturen; Det hjælper med at designe programmer baseret på den første implicitte parameter, som kan løses ved kørsel. Der er nogle sprog i Java, tillader en programmør at forhindre en metode fra at blive tilsidesat.
Sammenligning mellem overbelastning og overstyring:
overbelastning | Overstyring | |
Definition | Det betyder at have metoder af samme klasse under samme navn, men hver metode har forskellige parametre eller har samme parametre med forskellige typer og ordrer. | Det betyder at have en underklasse med samme metoder under samme navn og nøjagtig samme type parametre og samme returtype som en superklasse. |
Betyder | Det betyder, at mere end en metode deler samme navn i samme klasse, men har en anden signatur. | Det betyder, at metoden i basisklassen er omdefineret i den afledte klasse med samme signatur. |
Opførsel | Det tilføjer eller udvider metoderne adfærd. | Det ændrer den eksisterende adfærd af en metode. |
polymorfi | Det er en kompileringstidspolymorfisme. | Det er en run-time polymorfisme. |
Statisk metode | Den statiske metode kan overbelastes. | Den statiske metode kan ikke overskrides. |
Bånd | Statisk obligation. | Dynamisk binding. |
Arv | Det kan eller kræver ikke arv. | Det kræver altid arv. |
Association | Det er normalt forbundet med statiske programsprog. | Det er normalt forbundet med objektorienterede programmer. |
Underskrift | Metoder har forskellig signatur. | Metoder skal have samme signatur. |
Hastighed | Det er hurtigere end overordnet. | Det er langsomt i forhold til overbelastning. |
Klasser | Det kræver ikke mere end en klasse til overbelastning. | Det kræver mindst to klasser for overbelastning. |
Niveau | Metoder kan have ethvert adgangsniveau. | Metoder har samme eller bredt adgangsniveau. |
Eksempel | Klasse Tilføj { int sum (int a, int b) { returnere a + b; } int sum (int a) { returnere a + 10; } } | Klasse A // Superklasse { void display (int num) { print num; } } // Klasse B arver klasse A Klasse B // Underklasse { void display (int num) { print num; } } |