Huvudskillnad : Överbelastning innebär att ha två metoder i samma klass med samma namn och med olika parametertyper, medan överordnad innebär att två olika metoder är i samma klass med samma parametertyper men med olika implementeringar.
Metoderna tvingande och överbelastning är två begrepp eller tekniker som används i Java-programmeringsspråk. Båda koncepten tillåter programmeraren att tillhandahålla olika implementeringar för metoder med samma namn. Denna artikel skiljer mellan de två begreppen programmering.
Funktionsöverbelastning eller överbelastning av metoder medger att man skapar flera metoder under samma namn, i samma klass men olika från varandra i inmatning och utmatningstyp för funktionen. Det definieras helt enkelt som en funktions förmåga att utföra olika uppgifter.
Vid överbelastning delar metoden implementeringar samma namn eftersom de utför liknande uppgifter. Överbelastning betraktas också som polymorf i sin natur. Funktionerna som har olika implementeringar är beroende av angivna argumenttyper. Det är vanligtvis associerat med statiska programmeringsspråk som styr typkontroll i funktionssamtal. Det anses också praktiskt eftersom det tillåter programmeraren att skriva ett antal olika metoder i samma klass. Men vid överbelastning ändras runtime-processorn namnet på alla överbelastade metoder, vilket kan vara ett problem.
Metoden överordnad, i objektorienterad programmering, är en funktion som tillåter en underklass eller barnklass att tillhandahålla en specifik implementering av en metod som redan tillhandahålls av en av dess superklasser eller föräldrakurser. Genomförandet i underklassen strider mot eller ersätter implementeringen i moderklassen genom att tillhandahålla en metod med samma namn, samma parametrar eller signatur och samma returtyp som metoden i förälsklassen.
Vid överordnad metod kodas funktionerna för att utföra specifika uppgifter i ett program. Överstyrning beror på närvaron av en basklassfunktion för sitt utseende. Här bestäms den exekverade funktionen av objektet som används för att åberopa det, dvs om ett föremål för en föräldraklass används för att påberopa metoden, kommer funktionen i föräldraklassen att utföras. Övergripande är polymorf i naturen; det bidrar till att utforma program baserat på den första implicita parametern, som kan lösas vid körning. Det finns några språk i Java, tillåter en programmerare att förhindra att en metod överskrids.
Jämförelse mellan överbelastning och överstyrning:
överbelastning | tvingande | |
Definition | Det betyder att ha metoder av samma klass under samma namn, men varje metod har olika parametrar eller har samma parametrar med olika typer och ordningar. | Det betyder att ha en underklass med samma metoder under samma namn och exakt samma typ av parametrar och samma returtyp som en superklass. |
Menande | Det betyder att mer än en metod delar samma namn i samma klass men har en annan signatur. | Det betyder att metoden för basklassen är omdefinierad i den härledda klassen med samma signatur. |
Beteende | Det lägger till eller sträcker sig till metoderna beteende. | Det ändrar det existerande beteendet hos en metod. |
polymorfism | Det är en kompileringstidspolymorfism. | Det är en körtidspolymorfism. |
Statisk metod | Den statiska metoden kan vara överbelastad. | Den statiska metoden kan inte överskridas. |
Obligation | Statisk obligation. | Dynamisk bindning. |
Arv | Det kan eller kanske inte kräva arv. | Det kräver alltid arv. |
Förening | Det är vanligtvis förknippat med statiska programspråk. | Det är vanligtvis associerat med objektorienterade program. |
Signatur | Metoder har olika signaturer. | Metoder måste ha samma signatur. |
Fart | Det är snabbare än övergripande. | Det är långsamt jämfört med överbelastning. |
Klasser | Det kräver inte mer än en klass för överbelastning. | Det kräver minst två klasser för överbelastning. |
Nivå | Metoder kan ha någon åtkomstnivå. | Metoder har samma eller breda åtkomstnivå. |
Exempel | Klass Lägg till { int summa (int a, int b) { returnera a + b; } int summa (int a) { returnera a + 10; } } | Klass A // Superklass { tomt display (int num) { skriv ut num; } } // Klass B ärver Class A Klass B // Underklass { tomt display (int num) { skriv ut num; } } |