Rekommenderas, 2024

Redaktionen

Skillnad mellan metodöverbelastning och överstyrning

Metod överbelastning
Metodsöverbelastning, även känd som Funktionsöverbelastning eller Kompileringstidpolymorfism, är ett begrepp med att ha två eller flera metoder med samma namn men olika signaturer i samma omfattning. Det finns många programmeringsspråk som stöder denna funktion: Ada, C ++, C #, D och Java.

Exempel på metodöverbelastning i C #

klass OverloadShapes {float Polygon (intra radie, float pi) {float circleArea = pi * radien * radien; } int Polygon (int längd, int bredd) {int rektangelArea = längd * bredd; } int Polygon (int sida) {int squareArea = sida * sida; }}
1 2 3 4 5 6 7 8 9 10 11 12 13 14klass OverloadShapes {float Polygon (intra radie, float pi) {float circleArea = pi * radien * radien; } int Polygon (int längd, int bredd) {int rektangelArea = längd * bredd; } int Polygon (int sida) {int squareArea = sida * sida; }}

Som visat i ovanstående exempel överlagras metoden "Polygon" 3 gånger med olika metod signatur, dvs typen eller antalet parametrar är olika.

Metod Överstyrning
Metoden överordnad, även känd som Funktionsövergripande eller Run-time-polymorfism, är en OOP-funktion som gör det möjligt för en barnklass att ge sin egen implementering till den metod som definieras i förälderklassen. Genomförandet i barnklassen strider mot definitionen av metoden i basklassen, förutsatt att metoden i barnklassen ska ha samma namn, signatur och returtyp.

Exempel på metodöverstyrning i C #

klass Source1 {public void draw () {Console.Writeline ("Jag är i klassen Source1"); }} klass Source2 utökar Source1 {public void draw () {Console.Writeline ("Jag är i klassen Source2"); }}
1 2 3 4 5 6 7 8 9 10klass Source1 {public void draw () {Console. Writeline ("Jag är i klassen Source1"); }} klass Source2 utökar Source1 {public void draw () {Console. Writeline ("Jag är i klassen Source2"); }}

Här åsidosätter dragningsmetoden i Source2-klassen den teckningsmetod som definierats i Source1-klassen.

Skillnad mellan metodöverbelastning och metodöverstyrning

  1. Metoden för överbelastning måste ha en annan signatur. I metod måste överordnade metoder ha samma signatur.
  2. Funktionsöverbelastning är att "lägga till" eller "förlänga" mer till metodens beteende. Funktionsövergripande är att helt "ändra" eller "omdefiniera" en metods beteende.
  3. Metoden överbelastning används för att uppnå kompileringstid polymorfism; metodöverstyrning används för att uppnå körtidspolymorfism.
  4. I metod / funktion överbelastning kompilatorn vet vilket objekt som tilldelats till vilken klass vid tidpunkten för sammanställningen, men i metod överordnad denna information är inte känd till runtime.
  5. Funktionsöverbelastning sker i samma klass, medan Överriding sker i en klass som härrör från en basklass.
Top