Doporučená, 2021

Redakce Choice

Rozdíl mezi metodou přetížení a přepsáním

Metoda Přetížení
Metoda přetížení, známá také jako funkční přetížení nebo polymorfismus kompilačního času, je konceptem dvou nebo více metod se stejným názvem, ale odlišným podpisem ve stejném rozsahu. Existuje mnoho programovacích jazyků, které tuto funkci podporují: Ada, C ++, C #, D a Java.

Příklad přetížení metody v C #

class OverloadShapes {float Polygon (int radius, float pi) {float circleArea = pi * radius * radius; } int Polygon (int length, int šířka) {int rectangleArea = délka * šířka; } int Polygon (int strana) {int squareArea = side * strana; }}
1 2 3 4 5 6 7 8 9 10 11 12 13 14class OverloadShapes {float Polygon (int radius, float pi) {float circleArea = pi * radius * radius; } int Polygon (int length, int šířka) {int rectangleArea = délka * šířka; } int Polygon (int strana) {int squareArea = side * strana; }}

Jak je ukázáno ve výše uvedeném příkladu, metoda „Polygon“ je přetížena třikrát jiným podpisem metody, tj. Typ nebo počet parametrů se liší.

Metoda přepsání
Metoda overriding, známá také jako polymorfismus funkce Overriding nebo Run time, je funkce OOP, která umožňuje podřízené třídě poskytnout vlastní implementaci metodě definované v nadřazené třídě. Implementace v podřízené třídě přepíše definici metody v základní třídě za předpokladu, že metoda v podřízené třídě by měla mít stejný název, podpis a typ návratu.

Příklad metody přepsání v C #

class Source1 {public void draw () {Console.Writeline ("Já jsem ve třídě Source1"); }} třída Source2 rozšiřuje Source1 {public void draw () {Console.Writeline ("Já jsem ve třídě Source2"); }}
1 2 3 4 5 6 7 8 9 10class Source1 {public void draw () {Konzola. Zápis ("Jsem ve třídě Source1"); }} třída Source2 rozšiřuje Source1 {public void draw () {Console. Zápis ("Jsem ve třídě Source2"); }}

Metoda nakreslení ve třídě Source2 zde potlačí metodu kreslení definovanou ve třídě Source1.

Rozdíl mezi metodou přetížení a přepsáním metody

  1. Metody přetížení metody musí mít odlišný podpis. V metodě musí mít prvořadé metody stejný podpis.
  2. Funkce Přetížení je „přidat“ nebo „rozšířit“ více do chování metody. Funkce převažující je zcela „změnit“ nebo „předefinovat“ chování metody.
  3. Metoda přetížení se používá k dosažení polymorfismu kompilačního času; Metoda overriding se používá k dosažení polymorfismu run-time.
  4. V metodě / funkce přetížení kompilátor ví, který objekt přiřazený které třídě v době kompilace, ale v metodě převažující tyto informace není známo, dokud runtime.
  5. Funkce Přetížení probíhá ve stejné třídě, zatímco Overriding probíhá ve třídě odvozené od základní třídy.
Top