Skillnad mellan metodöverbelastning och överstyrning

Metod Överbelastning
Metodsöverbelastning, även känd som Function Overloading eller Compile Time Polymorphism, är ett koncept att ha två eller flera metoder med samma namn men olika signaturer inom samma räckvidd. Det finns många programmeringsspråk som stöder denna funktion: Ada, C ++, C #, D och Java.

Exempel på metodöverbelastning i C #

1234567891011121314 Klassen OverloadShapes float Polygon (intradius, 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 Övergripande
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 #

12345678910 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");

Här drar teckningsmetoden i Source2-klassen uppdragsmetoden definierad i Source1-klassen.

Skillnad mellan metodöverbelastning och metodöverstyrning

  1. I Metoden måste överbelastnings metoder 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 för runtime.
  5. Funktionsöverbelastning sker i samma klass, medan Överriding sker i en klass som härrör från en basklass.
DET