Co to jest dziedziczenie hybrydowe w C++? To typy z przykładami

Opublikowany: 2021-05-27

Często używamy terminu „dziedziczenie” w kontekście programowania. Jest to cecha ćwiczona w programowaniu w celu najlepszego ponownego wykorzystania kodów. Jeśli przypomnisz sobie koncepcję „IS-A” w OOP (programowanie zorientowane obiektowo), przekonasz się, że jest ona oparta na funkcji dziedziczenia. Implementacja dziedziczenia pomoże Ci zdobyć zaawansowane pomysły projektowe w C++.

Spis treści

Co to jest dziedziczenie?

W procesie dziedziczenia obiekty jednej klasy uzyskują właściwości i zachowanie innej klasy. Tutaj nowa klasa pochodzi z istniejącej klasy bazowej. Pochodna klasa składowa jest zwykle nazywana klasą podrzędną i składową klasy bazowej klasy nadrzędnej. Po wyprowadzeniu klasy podrzędnej dziedziczy ona wszystkie właściwości i metody z klasy nadrzędnej.

Dodatkowo klasa potomna może mieć swoje wyłączne właściwości i metody przeznaczone do określonego celu. Dodatkowe funkcje dodane lokalnie do istniejącej klasy nie wpłyną na właściwości odziedziczone po klasie nadrzędnej. W ten sposób nowa klasa będzie miała połączone cechy obu klas.

Dziedziczenie w C++

Często w rzeczywistości programista musi opracować obiekt, który musi:
1) posiadać wszystkie cechy rodzica, a dodatkowo
2) w niektórych aspektach wytrwałość jest szczególna.

Kodowanie tak wyjątkowych właściwości w głównej klasie niekoniecznie musi być praktyczne i ekonomiczne. W takim przypadku nowa klasa jest wyprowadzana przez rozszerzenie klasy bazowej. Również wywodząc go z innej klasy posiadającej dodatkowe cechy. W ten sposób możesz ponownie używać, rozszerzać lub modyfikować atrybuty i zachowania zdefiniowane w innych klasach. W ten sposób klasa potomna wywodząca się z wielu klas daje obiekt, który jest łatwy w utrzymaniu i przenoszeniu. Klasa pochodna jest klasą wyspecjalizowaną dla klasy podstawowej.

Z technicznego punktu widzenia słowo kluczowe „extends” służy do dziedziczenia klasy. C++ używa symbolu dwukropka („ : ”) do dziedziczenia z klasy.

Rodzaje spadków

Użycie kombinacji dziedziczenia i implementacji różni się w celu, w jakim klasy są wyprowadzane. W C++ dostępne są różne rodzaje dziedziczenia, które wymieniono poniżej:

  • Pojedyncze dziedziczenie to sytuacja, w której klasa pochodna dziedziczy właściwości i zachowanie z pojedynczej klasy bazowej. Przykład: klasa A → klasa B.
  • Dziedziczenie hierarchiczne polega na tym, że z jednej klasy bazowej tworzona jest więcej niż jedna klasa pochodna. Przykład: klasa A → klasa B → klasa C.
  • Wielokrotne dziedziczenie służy do wyprowadzania klasy z wielu klas bazowych. Tutaj obiekty potomne tworzone przez programistów będą miały połączone aspekty cech i funkcji z wielu klas nadrzędnych. Obiekty te są zgodne z ich hierarchiami klas bazowych.
  • Dziedziczenie wielopoziomowe to sytuacja, w której klasa podrzędna pochodzi z innej klasy pochodnej. Ta funkcja przenosi połączone aspekty wielu klas i podąża za ich hierarchiami.
  • Dziedziczenie hybrydowe to niejednorodna cecha korzystania z wielu dziedziczeń. Tutaj klasa podrzędna wywodzi się z jednej lub więcej kombinacji dziedziczenia pojedynczego, hierarchicznego i wielopoziomowego. To dziedziczenie jest stosowane w programach do mieszania różnych typów dziedziczenia; na przykład podczas mieszania pojedynczego dziedziczenia z wieloma dziedziczeniami lub sytuacji, gdy wiele dziedziczeń jest mieszanych w jednym programie.

Prosty przykład

Tutaj Klasa B i Klasa C wywodzą się z klasy bazowej, Klasy A.

Hierarchiczna klasyfikacja samochodów przedstawia dwie klasy. Zarówno „samochody benzynowe”, jak i „samochody elektryczne” wywodzą się z „samochodów” klasy podstawowej.

Dziedziczenie hybrydowe w C++

Mogą zaistnieć sytuacje, w których musimy zastosować dwa lub więcej typów dziedziczenia w połączeniu, aby zaprojektować program. Gdy program obejmuje więcej niż jeden typ dziedziczenia, nazywa się to dziedziczeniem hybrydowym.

Dziedziczenie hybrydowe to połączenie prostego, wielokrotnego dziedziczenia i dziedziczenia hierarchicznego. Zwykle w wielu dziedziczeniach klasa jest pochodną dwóch klas, w których jedna z klas nadrzędnych jest również klasą pochodną, ​​a nie klasą bazową.

Dziedziczenie hybrydowe w C++ to dziedziczenie, w którym klasa pochodzi z więcej niż jednej formy lub kombinacji dowolnego dziedziczenia. Dziedziczenie hybrydowe w C++ jest również nazywane dziedziczeniem wielościeżkowym, gdzie jedna klasa pochodna może dziedziczyć właściwości klasy bazowej w różnych ścieżkach. Czasami nazywane także dziedziczeniem wielościeżkowym. Na przykład można to osiągnąć za pomocą kombinacji dziedziczenia wielopoziomowego i hierarchicznego.

Krótko mówiąc, dziedziczenie hybrydowe to połączenie dwóch lub więcej rodzajów dziedziczenia. Na przykład poprzez implementację dziedziczenia jedno- i wielopoziomowego w tym samym programie.

Schemat blokowy dziedziczenia hybrydowego

Diagram przedstawia hybrydową kombinację dwóch dziedziczeń; dziedziczenie pojedyncze i dziedziczenie wielokrotne. Tutaj, w pojedynczym dziedziczeniu, klasa B wywodzi się z klasy A . Podobnie w przypadku dziedziczenia wielokrotnego Klasa D jest dziedziczona z wielu klas. Tutaj klasa B i klasa C. Tak więc mieszanka dziedziczenia pojedynczego i wielokrotnego tworzy dziedziczenie hybrydowe.

Dziedziczenie hybrydowe ma zastosowanie w scenariuszach, w których wymagane jest zastosowanie więcej niż jednego dziedziczenia w programie.

Składnia dziedziczenia hybrydowego w C++

Typowa składnia i semantyka dziedziczenia hybrydowego w C++ będzie następować, jak pokazano poniżej:

Przykłady dziedziczenia hybrydowego w C++

Przykład 1: Pojedyncze + wielokrotne dziedziczenie

Zobaczmy, jak zaimplementowano dziedziczenie pojedyncze i wielokrotne.

Każdy blok na tym diagramie reprezentuje klasę, a odpowiadająca mu strzałka dziedziczenie klasy.

Przykład 2: Dziedziczenie jednopoziomowe + wielopoziomowe

Możemy również zaimplementować inne rodzaje dziedziczenia w celu utworzenia dziedziczenia hybrydowego.

Rozważmy przykład w czasie rzeczywistym .

Podklasę samochodu wyprowadzamy z klasy Vehicle. Kolejna klasa charakteryzuje Racing. Kiedy wyprowadzimy ostateczną encję, zarówno z klasy Car, jak i klasy Racing, da to łączny wynik. Tą pochodną jest Ferrari – samochód wyścigowy.

Oto prosty program ilustrujący koncepcję dziedziczenia hybrydowego w C++ .

Przykładowy kod

Wyjście

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

Wniosek

Mam nadzieję, że ten artykuł pomógł ci zrozumieć koncepcję i typy dziedziczenia hybrydowego w C++ . Studenci w strumieniu programów komputerowych i związanych z komputerami mogą zwiększyć swoje umiejętności i wiarygodność techniczną, na przykład koncepcje OOP. upGrad zapewnia zasoby i bazę wiedzy, aby zachęcić takich specjalistów do zdobywania wiedzy z zakresu programowania i konkurowania na rynku branżowym. W upGrad masz również możliwość poznania profesjonalnego networkingu i rozwoju umiejętności.

Mamy nadzieję, że będziesz miał doskonałą okazję do nauki podczas wykonywania tych projektów C++. Jeśli chcesz dowiedzieć się więcej i potrzebujesz mentoringu ze strony ekspertów branżowych, zapoznaj się z programem Executive PG UpGrad i IIIT Banglore w zakresie tworzenia oprogramowania z pełnym pakietem.

Co to jest dziedziczenie w programowaniu obiektowym?

Dziedziczenie to mechanizm ponownego wykorzystania kodu, który pomaga w symulowaniu rzeczywistego świata. Rozszerza pojęcie abstrakcji danych w OOP. Jest to proces, w którym klasa nabywa właściwości innej klasy. W programowaniu obiektowym podstawowe znaczenie ma to, że klasę można zdefiniować tylko w kategoriach innej klasy. Dzieje się tak z powodu koncepcji abstrakcji. Dziedziczenie to mechanizm, który tworzy nowe klasy obiektów w tej samej hierarchii klas, co inne obiekty. Główną zaletą dziedziczenia jest ponowne wykorzystanie kodu. Jest to sposób na ponowne wykorzystanie kodu. Jeśli masz klasę i wykonuje ona określoną pracę, możesz ją wykorzystać również do innej pracy. Po prostu powiedz, że samochód i ciężarówka wykonują tę samą pracę, więc możesz używać tego samego kodu do ich prowadzenia.

Jakie są 3 zakresy dziedziczenia w C++?

Zakresy dziedziczenia w C++ są prywatne, chronione i publiczne. Dziedziczenie prywatne ma miejsce, gdy jedna klasa jest dziedziczona z innej klasy, ale nie można uzyskać dostępu do klasy pochodnej poza klasą. Te typy dziedziczenia mogą być używane tylko wtedy, gdy klasa podstawowa nie ma być dostępna poza klasą. Chronione dziedziczenie jest używane, gdy klasa podstawowa nie ma być dostępna poza klasą i ma dostęp poza klasą. Dziedziczenie publiczne jest używane, gdy klasa bazowa ma być dostępna poza klasą.

Co to jest dziedziczenie wielokrotne w C++?

Dziedziczenie wielokrotne to możliwość wyprowadzenia klasy z więcej niż jednej klasy. Ta funkcja nie jest dostępna w C. Jest to jedna z najważniejszych funkcji C++, która obsługuje programowanie obiektowe. Implementacja dziedziczenia wielokrotnego w C++ opiera się na koncepcji klas dziedziczenia. Dziedziczenie wielokrotne to mechanizm obsługujący model programowania zorientowanego obiektowo, który może służyć do rozwiązywania niektórych problemów, takich jak ponowne użycie behawioralne i ponowne użycie kodu. Ponowne użycie kodu zawsze było problemem w C++, ponieważ C++ obsługuje tylko pojedyncze dziedziczenie. Dziedziczenie wielokrotne jest osiągane przez połączenie wielu interfejsów w jeden obiekt.