Różnica między przeciążeniem metody a zastąpieniem

Przeciążenie metody

Przeciążanie metod, znane również jako przeciążanie funkcji lub polimorfizm czasu kompilacji, to koncepcja posiadania dwóch lub więcej metod o tej samej nazwie, ale o różnych sygnaturach w tym samym zakresie. Istnieje wiele języków programowania obsługujących tę funkcję: Ada, C ++, C #, D i Java.

Przykład metody przeciążenia w C #
Jak pokazano w powyższym przykładzie, metoda „Wielokąt” jest przeciążona 3 razy inną sygnaturą metody, tj. Rodzaj lub liczba parametrów są różne.

Metoda przesłonięcia

Zastępowanie metod, znane również jako zastępowanie funkcji lub polimorfizm w czasie wykonywania, to funkcja OOP, która umożliwia klasie potomnej zapewnienie własnej implementacji metody zdefiniowanej w klasie nadrzędnej. Implementacja w klasie potomnej zastępuje definicję metody w klasie podstawowej, pod warunkiem, że metoda w klasie potomnej powinna mieć tę samą nazwę, podpis i typ zwracany.

Przykład zastępowania metody w C #
W tym przypadku metoda losowania w klasie Source2 zastępuje metodę losowania zdefiniowaną w klasie Source1.

Różnica między przeciążeniem metody a zastąpieniem metody

  1. W metodzie metody przeciążania muszą mieć inną sygnaturę. W metodzie metody zastępujące muszą mieć ten sam podpis.
  2. Przeciążenie funkcji polega na „dodaniu” lub „rozszerzeniu” więcej na zachowanie metody. Przesłanianie funkcji polega na całkowitym „zmianie” lub „przedefiniowaniu” zachowania metody.
  3. Przeciążenie metody służy do osiągnięcia polimorfizmu w czasie kompilacji; zastępowanie metody służy do osiągnięcia polimorfizmu w czasie wykonywania.
  4. W metodzie / funkcji kompilator przeciążający wie, który obiekt przypisany do której klasy w momencie kompilacji, ale w metodzie przesłaniającej ta informacja nie jest znana do czasu uruchomienia.
  5. Funkcja Overloading ma miejsce w tej samej klasie, podczas gdy Overriding ma miejsce w klasie pochodnej z klasy podstawowej.
TO