Różnica między przeciążeniem metod i nadmiernym
- 3317
- 782
- Maksym Cieślik
Przeciążenie metody
Przeciążenie metody, znane również jako przeciążenie funkcji lub kompilacja polimorfizm czasowy, jest koncepcją posiadania dwóch lub więcej metod o tej samej nazwie, ale różnej podpisie w tym samym zakresie. Istnieje wiele języków programowania, które obsługują tę funkcję: ADA, C ++, C#, D i Java.
Przykład przeciążenia metodą w C#
Jak pokazano w powyższym przykładzie, metoda „wielokąta” jest przeciążona 3 razy z inną sygnaturą metody, i.e Typ lub liczba parametrów jest inna.
Metoda zastępująca
Metoda zastępująca, znana również jako polimorfizm nadrzędnego funkcji lub w czasie wykonywania, jest funkcją OOP, która pozwala klasie dziecięcej zapewnić własną implementację metody zdefiniowanej w klasie nadrzędnej. Implementacja w klasie dzieci zastępuje definicję metody w klasie podstawowej, pod warunkiem, że metoda w klasie dziecięcej powinna mieć tę samą nazwę, podpis i typ powrotu.
Przykład metody zastępującej w C#
Tutaj metoda losowania w klasie Source2 zastępuje metodę rysowania zdefiniowaną w klasie Source1.
Różnica między przeciążeniem metod a zastępowaniem metody
- W metodach przeciążania metod musi mieć inny podpis. W metodzie nadrzędne metody muszą mieć ten sam podpis.
- Przeciążenie funkcji polega na „dodaniu” lub „rozszerzeniu” bardziej na zachowanie metody. Nadrzędne funkcje polega na całkowitej „zmianie” lub „na nowo zdefiniowaniu” zachowania metody.
- Przeciążenie metody stosuje się do osiągnięcia polimorfizmu czasowego; Metoda nadmierne jest stosowane w celu osiągnięcia polimorfizmu w czasie wykonywania.
- W kompilator przeciążenia metody/funkcji wie, który obiekt przypisał do której klasy w momencie kompilacji, ale w metodzie zastępowanie tych informacji nie jest znane do czasu wykonania.
- Przeciążenie funkcji odbywa się w tej samej klasie, podczas gdy nadrzędność odbywa się w klasie pochodzącej z klasy podstawowej.