- Charakterystyka dziedziczenia
- Hierarchia
- Wielopostaciowość
- Rodzaje dziedziczenia
- Wyjątkowe dziedzictwo
- Dziedziczenie wielopoziomowe
- Dziedziczenie hierarchiczne
- Dziedziczenie hybrydowe
- Dziedziczenie wielokrotne
- Typy dziedziczenia z klasy bazowej
- Dziedziczenie publiczne
- Dziedziczenie chronione
- Dziedziczenie prywatne
- Przykłady
- Przykład Pythona
- Przykład w C ++
- Bibliografia
Dziedziczenia w obiekcie - programowanie zorientowane jest sposobem organizowania obiektów w hierarchii od ogółu do konkretnego. Jest to gadżet używany do rozszerzenia klasy na inną klasę, zachowując analogiczne wykonanie.
W większości opartych na klasach języków obiektowych obiekt utworzony przez dziedziczenie, nazywany obiektem potomnym, otrzymuje wszystkie właściwości i zachowania obiektu nadrzędnego.
Prosty dowód dziedziczenia w orientacji obiektowej. Źródło: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain
Dlatego jest to cecha, która reprezentuje relacje między różnymi klasami. Dziedziczenie pozwala klasie zachowywać się tak samo jak inna klasa i rozszerzać lub dostosowywać to zachowanie w celu zapewnienia specjalnego działania dla określonych potrzeb.
Dziedziczenie może pomóc w reprezentowaniu obiektów, które mają pewne różnice i pewne podobieństwa w sposobie ich działania. Możesz umieścić wszystkie funkcje wspólne dla obiektów w klasie bazowej, a następnie zdefiniować jedną lub więcej podklas z własną niestandardową funkcjonalnością.
Charakterystyka dziedziczenia
Dziedziczenie jest jedną z kluczowych cech programowania obiektowego, używaną do definiowania nowej klasy z istniejących klas.
Oznacza to, że nowe klasy mogą pochodzić z istniejących klas podstawowych, dodając nowe funkcje. Nie musisz pisać od zera. Dlatego dziedziczenie umożliwia łatwe ponowne użycie istniejącego kodu.
Jeśli masz już klasę, która robi prawie wszystko, co chcesz, możesz utworzyć podklasę, w której niektóre jej zachowania są częściowo nadpisane lub być może dodano jakieś nowe funkcje.
Klasa pochodna dziedziczy wszystkie metody klasy bazowej, z wyjątkiem następujących:
- Konstruktory, destruktory i konstruktory kopiujące klasy bazowej.
- Operatory przeciążone z klasy bazowej.
- Funkcje przyjazne dla klasy bazowej.
Hierarchia
Dziedziczenie, podobnie jak drzewo genealogiczne, służy do tworzenia hierarchii klas. Należy zauważyć, że atrybuty określone dla klasy bazowej będą obecne automatycznie w klasie pochodnej. Również metody dla klasy bazowej będą działać dla pochodnych.
O klasie mówi się, że jest podklasą klasy, z której dziedziczy. Z drugiej strony ta klasa będzie twoją superklasą. Najbardziej ogólną klasę można nazwać klasą bazową, ponieważ jest ona podstawą hierarchii.
Wielopostaciowość
Dziedziczenie jest bardzo popularne w niektórych językach z typami statycznymi, ponieważ pozwala programiście uniknąć niektórych ograniczeń typu statycznego.
Obiekt, który dziedziczy po innym obiekcie, jest uważany za podtyp tego obiektu. Przykładem mogą być obiekty „instruktor” i „student”, z których każdy dziedziczy po „osobie”.
Jeśli instruktor i uczeń są tego samego typu osoby, możesz napisać funkcję, która akceptuje typ osoby jako parametr i która działa na obiektach instruktora i ucznia, ponieważ obaj są spadkobiercami osób.
Rodzaje dziedziczenia
Wyjątkowe dziedzictwo
Gdy klasa pochodna dziedziczy właściwości i zachowanie pojedynczej klasy bazowej. Oznacza to, że jedna klasa obejmuje tylko jedną inną klasę.
Dziedziczenie wielopoziomowe
Odnosi się do gadżetu, w którym można dziedziczyć z klasy pochodnej, czyniąc tę klasę pochodną klasą bazową dla nowej klasy. Oznacza to, że powstaje, gdy klasa pochodna jest tworzona z innej klasy pochodnej.
Dziedziczenie hierarchiczne
W tym dziedziczeniu wiele podklas dziedziczy z jednej klasy. Oznacza to, że dzieje się tak, gdy pojedyncza klasa bazowa jest dziedziczona przez więcej niż jedną klasę pochodną.
Dziedziczenie hybrydowe
Jest to dziedziczenie wynikające z połączenia dowolnego z trzech poprzednich dziedziczeń (jedno, hierarchiczne i wielopoziomowe).
Dziedziczenie wielokrotne
Odpowiada liczbie dziedziczenia, gdy klasa dziedziczy z więcej niż jednej nadklasy. Wadą tego typu dziedziczenia jest to, że klasa pochodna będzie musiała obsłużyć zależność, którą ma od dwóch klas bazowych.
Z drugiej strony, ten typ dziedziczenia umożliwia programistom tworzenie klas, które łączą aspekty wielu klas i odpowiadające im hierarchie.
Typy dziedziczenia z klasy bazowej
Dziedziczenie publiczne
Gdy klasa pochodzi z publicznej klasy bazowej, publiczne elementy członkowskie klasy bazowej stają się publicznymi członkami klasy pochodnej, a chronione elementy członkowskie klasy bazowej stają się chronionymi elementami członkowskimi klasy pochodnej.
Prywatni członkowie superklasy nigdy nie będą dostępni bezpośrednio z klasy pochodnej, ale można uzyskać do nich dostęp poprzez wywołania publicznych i chronionych członków klasy bazowej.
Dziedziczenie chronione
Po utworzeniu klasy dziedziczącej po chronionej nadklasie, zarówno publiczni, jak i chronieni członkowie tej nadklasy staną się chronionymi członkami klasy pochodnej.
Dziedziczenie prywatne
Kiedy podklasa jest tworzona z prywatnej nadklasy, publiczni i chronieni członkowie tej nadklasy staną się prywatnymi członkami podklasy.
Przykłady
Przykład Pythona
Aby pokazać, jak działa zasada dziedziczenia, weźmiemy roboty lub lepszą klasę robotów w języku programowania Python. Aby to zrobić, zostanie określona klasa o nazwie RobotMédico (PhysicianRobot), która pochodzi z nadklasy Robot.
Jeśli spojrzysz na kod klasy RobotMédico, zobaczysz, że żaden atrybut ani metoda nie została zdefiniowana w tej klasie.
Ponieważ klasa RobotMedico jest podklasą klasy Robot, w tym przypadku dziedziczy zarówno metodę __init__, jak i say_hi. Dziedziczenie tych metod oznacza, że można ich używać tak, jakby zostały zdefiniowane w klasie RobotMédico.
Kiedy tworzona jest instancja RobotMedico, funkcja __init__ tworzy również atrybut nazwy. Metodę say_hi można zastosować do obiektu „y” programu RobotMédico, co widać w wyniku poprzedniego kodu.
Przykład w C ++
Klasa może dziedziczyć z więcej niż jednej klasy, co oznacza, że może dziedziczyć dane i funkcje z wielu nadklas. Aby zdefiniować klasę pochodną, należy użyć listy pochodnych klas, aby określić klasy bazowe.
Lista pochodnych klas w C ++ nazywa jedną lub więcej klas bazowych i ma następującą postać: klasa klasa pochodna: specyfikator dostępu klasa bazowa, gdzie specyfikator dostępu jest publiczny, chroniony lub prywatny, a klasa bazowa to nazwa wcześniej zdefiniowanej klasy. Jeśli specyfikator dostępu nie jest używany, domyślnie przyjmowany jest prywatny.
Nadklasę „Kształt” i jej klasę pochodną „Prostokąt” można rozpatrywać w następujący sposób:
Gdy powyższy kod jest kompilowany i wykonywany, pojawia się następujący wynik: „Powierzchnia całkowita: 35”.
Bibliografia
- Dave Braunschweig (2020). Dziedziczenie i polimorfizm. Społeczność Rebus. Zaczerpnięte z: press.rebus.community.
- Kurs Pythona (2020). Dziedzictwo. Zaczerpnięte z: python-course.eu.
- Mentor danych (2020). Dziedziczenie. Zaczerpnięte z: datamentor.io.
- Punkt samouczków (2020). Dziedziczenie w C ++. Zaczerpnięte z: tutorialspoint.com.
- Informacje o sieci (2020). Różne rodzaje dziedziczenia. Zaczerpnięte z: net-informations.com.