Różnica między przeciążeniem a nadpisaniem | Przeciążanie a zastępowanie

Opublikowany: 2021-06-15

Spis treści

Wstęp

Programowanie obiektowe odgrywa ważną rolę w sektorach rozwoju oprogramowania. Z tym typem programowania związanych jest kilka pojęć, takich jak klasa, obiekt, polimorfizm, dziedziczenie, abstrakcja danych, programowanie ogólne i wyjątkowa obsługa.

Twórcy zawsze uważają koncepcję polimorfizmu za dość interesującą, która zawiera podkoncepcje, takie jak przeciążanie metod, nadpisywanie metod itp. Jednak, aby lepiej zrozumieć koncepcję polimorfizmu, należy zrozumieć różnicę między przeciążaniem a nadpisywaniem .

Różnica między przeciążaniem metody a nadpisywaniem metody

Istnieje wiele różnic między przeciążaniem metod a nadpisywaniem metod . Lista różnic między przeciążaniem a nadpisywaniem metod w java jest zestawiona poniżej:

Przeciążenie metody Zastępowanie metody
1 Metoda służy do zwiększenia czytelności programu. Metoda służy do zapewnienia implementacji metody dostarczanej przez nadklasę.
2 Jest wykonywany w ramach zajęć Występuje w dwóch klasach mających relację IS-A (dziedziczenie). Do zastąpienia wymagane są klasa podstawowa i podrzędna.
3 Metody lub funkcje muszą mieć tę samą nazwę i różne sygnatury. Metody lub funkcje muszą mieć tę samą nazwę i te same podpisy.
4 Parametry stosowane w tej metodzie powinny być inne. Te same parametry należy stosować w przypadku nadpisywania metody.
5 Jest to przykład polimorfizmu w czasie kompilacji. Powiązanie wywołania metody przeciążania z jej definicją następuje w czasie kompilacji. Jest to przykład polimorfizmu w czasie wykonywania. Powiązanie nadpisanego wywołania metody z jego definicją następuje w czasie wykonywania.
6 Tylko zmieniając typ zwracany, nie można wykonać przeciążenia metody. Typ zwrotu może być inny lub taki sam. Ale parametry powinny być inne. Typ zwracany w przesłonięciu metody może być taki sam lub kowariantny.
7 Przeciążanie metod można zastosować do metod statycznych. Oznacza to, że klasa może mieć więcej niż jedną metodę statyczną o tej samej nazwie. Zastępowania metod nie można zastosować do metod statycznych.
8 Wiązanie statyczne jest używane do przeciążania metod. Do nadpisywania metody jest używane wiązanie dynamiczne.
9 Lepszą wydajność zapewnia przeciążanie metod. Mniejsza wydajność w porównaniu z przeciążaniem metod. Powodem jest to, że wiązanie nadpisanych metod odbywa się w czasie wykonywania.
10 Metody prywatne i ostateczne mogą być przeciążone. Klasa może mieć więcej niż jedną prywatną/końcową metodę o tej samej nazwie. Nie można nadpisać metod prywatnych i ostatecznych. Klasa potomna nie może przesłonić prywatnych/końcowych metod swojej klasy bazowej.
11 Dziedziczenie może, ale nie musi być wymagane w przypadku przeciążenia metody. Dziedziczenie jest zawsze wymagane w przypadku nadpisywania metody.
12 Jest używany, aby dodać więcej do zachowania metod. Służy do zmiany zachowania istniejących metod.
13 Nie ma potrzeby obecności więcej niż jednej klasy w przeciążaniu metod. Zawsze potrzebne są co najmniej dwie klasy w zastępowaniu metod.
14 Jeśli przeciążenie się zepsuje, pojawi się błąd w czasie kompilacji i można go łatwo naprawić. Jeśli nadpisanie przerw może spowodować poważne problemy w naszym programie, ponieważ efekt będzie widoczny w czasie wykonywania.
15 Przeciążanie metody musi mieć inny podpis. Zastępowanie metody musi mieć ten sam podpis.
16 Modyfikatory dostępu w metodzie przeciążania mogą być dowolne lub różne. Modyfikator dostępu metody podklasy musi być taki sam lub wyższy niż modyfikator dostępu metody nadklasy w metodzie nadrzędnej.
17 Zgłaszane wyjątki mogą być dowolne w koncepcji przeciążania metod. W przesłonięciu metody zgłoszone niesprawdzone wyjątki mogą być dowolne. W przypadku zaznaczonych wyjątków metoda zastępująca nie powinna zgłaszać żadnych wyjątków, które są nowe lub szersze niż te zadeklarowane przez zastąpioną metodę.
18 Kompilator zawsze dba o rozwiązanie metody na podstawie typu referencyjnego. JVM zajmuje się rozwiązywaniem metod w oparciu o obiekt runtime.

Ucz się kursów oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Co następne?

Jeśli chcesz dowiedzieć się więcej o tworzeniu oprogramowania z pełnym pakietem, zapoznaj się z programem Executive PG UpGrad i IIIT-B w zakresie tworzenia oprogramowania z pełnym pakietem, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznych szkoleń, ponad 9 projektów i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

Co to jest polimorfizm środowiska uruchomieniowego?

Polimorfizm w czasie wykonywania to rodzaj polimorfizmu, który obejmuje dynamiczne typowanie. Oznacza to, że obiektami można manipulować tak, jakby były jednym typem. Jest to podobne do statycznego polimorfizmu, w którym obiektami manipuluje się tak, jakby miały jeden typ, niezależnie od ich podstawowego typu. Jest to jedna z pięciu głównych zasad projektowania oprogramowania. Jest używany z programowaniem obiektowym. Oznacza to, że zmienna może odnosić się do różnych obiektów w zależności od warunków w czasie wykonywania. Na przykład zmienna może być używana do odwoływania się do obiektu Dog, gdy zmienna jest zadeklarowana, ale podczas wykonywania programu zmienna może odnosić się do obiektu Cat. Jest to automatyczna konwersja typów. Na przykład, jeśli masz zmienną całkowitą i i przypiszesz jej wartość łańcuchową, stanie się ona zmienną łańcuchową.

Czym overriding różni się od Overloading?

Czy możemy nadpisać przeciążoną metodę?

Metoda przeciążona jest taka sama jak zwykła (pod względem liczby i rodzaju parametrów), z tą różnicą, że metoda przeciążona jest napisana w taki sposób, że może przyjmować parametry innego typu niż zwykła. Możesz przesłonić przeciążoną metodę w taki sam sposób, jak przesłoniłeś zwykłą.