Istnieje wiele różnic pomiędzy przeciążaniem metod a nadpisywaniem metod w Javie. Poniżej znajduje się lista różnic pomiędzy przeciążaniem i nadpisywaniem metod:
NIE. | Przeciążenie metody | Zastępowanie metody |
---|---|---|
1) | Stosowane jest przeciążanie metod aby zwiększyć czytelność programu. | Stosowane jest zastępowanie metody aby zapewnić konkretną implementację metody, która jest już zapewniona przez jej superklasę. |
2) | Wykonywane jest przeciążanie metody w klasie . | Następuje przesłonięcie metody w dwóch klasach które mają relację IS-A (dziedziczenie). |
3) | W przypadku przeciążenia metody, parametr musi być inny . | W przypadku nadpisania metody parametr musi być taki sam . |
4) | Przykładem jest przeciążanie metod Polimorfizm czasu kompilacji . | Przykładem jest przesłonięcie metody Polimorfizm czasu wykonywania . |
5) | W Javie nie można przeciążać metod, zmieniając tylko typ zwracanej metody. Typ zwrotu może być taki sam lub inny w przeciążeniu metody. Ale musisz zmienić parametr. | Typ zwrotu musi być taki sam lub kowariantny w nadpisaniu metody. |
Przykład przeciążania metody Java
class OverloadingExample{ static int add(int a,int b){return a+b;} static int add(int a,int b,int c){return a+b+c;} }
Przykład przesłaniania metody Java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void eat(){System.out.println('eating bread...');} }