Programowanie obiektowe (OOP) jest powszechnie stosowane do tworzenia oprogramowania. Wiele języków programowania obsługuje programowanie obiektowe. Programowanie obiektowe to metodologia projektowania programu z wykorzystaniem klas i obiektów. Klasa w OOP to schemat tworzenia obiektu. Klasa ma właściwości i metody. Obiekt jest instancją klasy. OOP zawiera cztery filary, takie jak dziedziczenie, polimorfizm, abstrakcja i enkapsulacja. W tym artykule omówiono różnicę między polimorfizmem a dziedziczeniem w OOP. The kluczowa różnica między polimorfizmem a dziedziczeniem w OOP jest właśnie to Polimorfizm to zdolność obiektu do zachowania się na wiele sposobów, a Dziedziczenie polega na utworzeniu nowej klasy przy użyciu właściwości i metod istniejącej klasy.
1. Przegląd i kluczowa różnica
2. Co to jest polimorfizm w OOP
3. Co to jest dziedziczenie w OOP
4. Podobieństwa między polimorfizmem a dziedziczeniem w OOP
5. Porównanie obok siebie - polimorfizm vs dziedziczenie w OOP w formie tabelarycznej
6. Podsumowanie
Polimorfizm ma wskazywać wiele form. Jeden obiekt może mieć wiele zachowań. Polimorfizm można podzielić na dwie kategorie. Przeciążają i zastępują.
Zapoznaj się z poniższym programem napisanym w Javie.
Rysunek 01: Przeciążenie
Zgodnie z powyższym programem tworzony jest obiekt typu A. Podczas wywoływania obj.sum (); da wynik związany z metodą sum (). Podczas wywoływania obj.sum (2,3); da wynik związany z sumą (int a, int b). Można zaobserwować, że ten sam obiekt ma różne zachowania w zależności od sytuacji. Gdy istnieje wiele metod o tej samej nazwie, ale o różnych parametrach, jest to znane jako przeciążenie. Jest również znany jako wiązanie statyczne lub skompilować polimorfizm czasowy.
Innym rodzajem polimorfizmu jest nadrzędny. Zapoznaj się z poniższym programem napisanym w Javie.
Rysunek 02: Przesłanianie
Zgodnie z powyższym programem istnieje metoda display () w klasie A. Klasa B rozciąga się na klasę A. Dlatego wszystkie metody w klasie A są dostępne dla klasy B. Jest to dziedziczenie. Pojęcie dziedziczenia opisano dalej.
Klasa B ma również tę samą metodę display (). Podczas tworzenia obiektu typu A i wywoływania metody wyświetlania dane wyjściowe dadzą B. Metoda wyświetlania klasy A jest zastępowana metodą wyświetlania klasy B. Zatem wynikiem jest B.
Kiedy istnieją metody o tej samej nazwie i tych samych parametrach, ale w dwóch różnych klasach i są one powiązane z dziedziczeniem, jest to znane jako przesłonięcie. Jest również znany jako Późne wiązanie, dynamiczne wiązanie, polimorfizm w środowisku wykonawczym. Przeciążenie i zastąpienie nazywane są polimorfizmem. Jest to ważna koncepcja w programowaniu obiektowym.
Zapoznaj się z poniższym programem napisanym w Javie.
Rysunek 03: Przykład dziedziczenia
Zgodnie z powyższym programem klasa A ma metodę sum (), a klasa B ma metodę sub ().
Metoda sum () klasy A może być używana w klasie B przy użyciu słowa kluczowego ext. Ponowne użycie właściwości i metod w istniejącej klasie w celu utworzenia nowej klasy jest znane jako Dziedziczenie. Nawet w klasie B nie ma metody sum (); jest dziedziczony z klasy A. Dziedziczenie jest przydatne do ponownego użycia kodu. Starsza klasa nazywa się klasa podstawowa, nadklasa lub klasa rodzicielska. Klasa pochodna nosi nazwę podklasa lub klasa dla dzieci.
Istnieją różne rodzaje dziedziczenia. Są to: dziedziczenie na jednym poziomie, dziedziczenie na wielu poziomach, dziedziczenie wielokrotne, dziedziczenie hierarchiczne i dziedziczenie hybrydowe.
W Single Inheritance istnieje jedna superklasa i jedna podklasa. Jeśli klasa A jest superklasą, a klasa B jest podklasą, wszystkie właściwości i metody klasy A są dostępne dla klasy B. Istnieje tylko jeden poziom; dlatego nazywane jest dziedziczeniem jednopoziomowym.
W dziedziczeniu wielopoziomowym istnieją trzy poziomy klas. Klasa pośrednia dziedziczy po klasie super. Podklasa dziedziczy po klasie pośredniej. Jeśli istnieją trzy klasy, jako A, B i C, a A jest klasą super, a B jest klasą pośrednią. Następnie B dziedziczy po A, a C dziedziczy po B, jest to dziedziczenie wielopoziomowe.
W wielokrotnym dziedziczeniu istnieje wiele superklas i jedna podklasa. Jeśli istnieją trzy superklasy zwane A, B, C, a D jest podklasą, klasa D może dziedziczyć po A, B i C. Wielokrotne dziedziczenie jest obsługiwane w języku programowania C ++. Nie jest obsługiwany w językach programowania, takich jak Java lub C #. Interfejsy są używane do implementacji wielokrotnego dziedziczenia w tych językach.
Jeśli istnieją klasy zwane A jako superklasy, a B, C są podklasami, te podklasy mogą dziedziczyć właściwości i metody klasy A. Ten rodzaj dziedziczenia jest znany jako Dziedziczenie hierarchiczne.
Istnieje inny specjalny typ dziedziczenia, znany jako dziedziczenie hybrydowe. Jest to połączenie wielopoziomowego i wielokrotnego dziedziczenia. Jeśli A, B, C i D są klasami, a B dziedziczy z A, a D dziedziczy zarówno z B, jak i C, to jest to dziedziczenie hybrydowe.
Polimorfizm vs dziedziczenie w OOP | |
Polimorfizm to zdolność obiektu do zachowania się na wiele sposobów. | Dziedziczenie polega na utworzeniu nowej klasy przy użyciu właściwości i metod istniejącej klasy. |
Stosowanie | |
Polimorfizm służy do wywoływania przez obiekty, która forma metod w czasie kompilacji i w czasie wykonywania. | Dziedziczenie służy do ponownego użycia kodu. |
Realizacja | |
Polimorfizm realizowany jest metodami. | Dziedziczenie jest realizowane w klasach. |
Kategorie | |
Polimorfizm można podzielić na przeciążanie i zastępowanie. | Dziedziczenie można podzielić na jednopoziomowe, wielopoziomowe, hierarchiczne, hybrydowe i wielokrotne. |
Polimorfizm i dziedziczenie to główne pojęcia w programowaniu obiektowym. Różnica między polimorfizmem a dziedziczeniem w OOP polega na tym, że polimorfizm jest wspólnym interfejsem wielu form, a dziedziczenie polega na utworzeniu nowej klasy przy użyciu właściwości i metod istniejącej klasy. Obie koncepcje są szeroko stosowane w rozwoju oprogramowania.
Możesz pobrać wersję PDF tego artykułu i używać go do celów offline zgodnie z cytatem. Pobierz wersję PDF tutaj Różnica między polimorfizmem a dziedziczeniem w OOP