- Karakteristike nasljeđivanja
- Hijerarhija
- polimorfizam
- Vrste nasljeđivanja
- Jedinstveno nasljeđivanje
- Nasljedstvo na više razina
- Hijerarhijsko nasljeđivanje
- Hibridno nasljeđivanje
- Višestruko nasljeđivanje
- Vrste nasljeđivanja iz osnovne klase
- Javno nasljedstvo
- Zaštićeno nasljeđivanje
- Privatno nasljeđivanje
- Primjeri
- Primjer Pythona
- Primjer u C ++
- Reference
Nasljeđe u objektno - orijentirano programiranje je način organiziranja objekata u hijerarhiji od općeg na specifične. To je naprava koja se koristi za proširivanje klase u drugu klasu, čuvajući analognu izvedbu.
U većini klase objektno orijentiranih jezika objekt stvoren nasljeđivanjem, zvan podređeni objekt, dobija sva svojstva i ponašanja roditeljskog objekta.
Jednostavan dokaz nasljeđivanja u orijentaciji predmeta. Izvor: Pluke / CC0 Creative Commons CC0 1.0 Univerzalno javno vlasništvo
Dakle, kvaliteta je koja predstavlja odnos između različitih klasa. Nasljeđivanje omogućava da klasa ima isto ponašanje kao i druga klasa te da to ponašanje proširi ili prilagodi tako da osigura posebnu akciju za specifične potrebe.
Nasljeđivanje može pomoći pri predstavljanju objekata koji imaju neke razlike i neke sličnosti u načinu rada. Sve funkcionalnosti zajedničkih objekata možete staviti u bazu, a zatim definirati jednu ili više potklasa s vlastitom prilagođenom funkcionalnošću.
Karakteristike nasljeđivanja
Nasljeđivanje je jedno od ključnih obilježja objektno orijentiranog programiranja koje se koristi za definiranje nove klase iz postojećih klasa.
Odnosno, nove klase mogu se izvesti iz postojećih osnovnih klasa, dodajući nove značajke. Ne morate pisati ispočetka. Stoga nasljeđivanje pruža način da se lako ponovo koristi postojeći kod.
Ako već imate klasu koja radi gotovo sve što želite, možete stvoriti potklasu u kojoj je neko njegovo ponašanje djelomično nadjačano ili je možda dodana neka nova funkcionalnost.
Derivirana klasa nasljeđuje sve metode osnovne klase, osim sljedeće:
- Konstruktori, destruktori i konstruktori kopiranja osnovnog razreda.
- Operatori su preopterećeni iz osnovne klase.
- Funkcije prilagođene osnovnoj klasi.
Hijerarhija
Kao što to čini obiteljsko stablo, nasljeđivanje služi oblikovanju hijerarhije klasa. Važno je napomenuti da će atributi određeni za osnovnu klasu biti automatski prisutni u izvedenoj klasi. Također će metode za osnovnu klasu djelovati na izvedenice.
Kaže se da je za podklasu klasa iz koje nasljeđuje. S druge strane, ova klasa bit će vaš super razred. Najviše generička klasa može se nazvati osnovnom klasom, jer je ona u bazi hijerarhije.
polimorfizam
Nasljeđivanje je vrlo popularno u nekim jezicima sa statičkim tipovima, jer programeru omogućuje izbjegavanje nekih ograničenja statičkog tipa.
Objekt koji nasljeđuje od drugog objekta smatra se podvrstama tog objekta. Primjer mogu biti objekti „instruktor“ i „učenik“, od kojih svaki nasljeđuje od „osobe“.
Ako su instruktor i student iste osobe, možete napisati funkciju koja tip osobe prihvaća kao parametar i koja djeluje na predmetima instruktora i učenika, jer su oboje nasljednici.
Vrste nasljeđivanja
Jedinstveno nasljeđivanje
Kada izvedena klasa nasljeđuje svojstva i ponašanje pojedine osnovne klase. Odnosno, jedna klasa se proteže samo na jednu drugu klasu.
Nasljedstvo na više razina
Odnosi se na gadget gdje možete naslijediti izvedenu klasu, pa ovu izvedenu klasu čini osnovnom za novu klasu. Odnosno, nastaje kada je izvedena klasa stvorena iz druge izvedene klase.
Hijerarhijsko nasljeđivanje
U ovom nasljeđivanju mnoge potklase nasljeđuju iz jedne klase. Odnosno, to se događa kada jednu osnovnu klasu nasljeđuje više izvedenih klasa.
Hibridno nasljeđivanje
To je rezultirajuće nasljeđivanje kad se kombinira bilo koje od tri prethodna nasljedstva (jednostruko, hijerarhijsko i višerazinsko).
Višestruko nasljeđivanje
To odgovara figuri nasljeđivanja kada klasa nasljeđuje više od jednog superklasa. Nedostatak ove vrste nasljeđivanja je taj što će izvedena klasa morati podnijeti ovisnost koju ima o dvije osnovne klase.
S druge strane, ova vrsta nasljeđivanja omogućava programerima da izgrade klase koje kombiniraju aspekte više klasa i njihove odgovarajuće hijerarhije.
Vrste nasljeđivanja iz osnovne klase
Javno nasljedstvo
Kad je klasa izvedena iz javne osnovne klase, javni pripadnici bazne klase postaju javni članovi izvedene klase, a zaštićeni pripadnici osnovne klase postaju zaštićeni članovi izvedene klase.
Privatnim članovima superklase nikada neće biti dostupno izravno iz izvedene klase, već im se može pristupiti putem poziva javnim i zaštićenim pripadnicima osnovne klase.
Zaštićeno nasljeđivanje
Kada se stvori klasa koja nasljeđuje od zaštićenog superklasa, i javnost i zaštićeni članovi ovog superklasa postaju zaštićeni članovi izvedene klase.
Privatno nasljeđivanje
Kada se podrazred stvori iz privatnog superklasa, javni i zaštićeni članovi ovog superklasa postaju privatni članovi podklasa.
Primjeri
Primjer Pythona
Da pokažemo kako funkcionira princip nasljeđivanja, uzet ćemo robote ili bolju klasu robota na programskom jeziku Python. Da biste to učinili, bit će specificirana klasa koja se zove RobotMédico (PhysicianRobot), a koja je izvedena iz superklase Robot.
Ako pogledate kôd klase RobotMédico, možete vidjeti da u ovoj klasi nisu definirani atributi ili metode.
Budući da je klasa RobotMedico potklasa Robota, u ovom slučaju nasljeđuje i __init__ i say_hi metode. Nasljeđivanje ovih metoda znači da se one mogu koristiti kao da su definirane u klasi RobotMédico.
Kada se stvori instanca RobotMedico, funkcija __init__ također će stvoriti atribut imena. Metoda say_hi može se primijeniti na objekt y na RobotMédico, kao što se može vidjeti u rezultatu prethodnog koda.
Primjer u C ++
Klasa može naslijediti više klasa, što znači da može naslijediti podatke i funkcije iz više superklasa. Za definiranje izvedene klase koristite popis derivacije klasa da biste odredili osnovne klase.
Popis izvoda klase u C ++ imenuje jednu ili više osnovnih klasa i ima sljedeći oblik: klasa izvedena klasa: specifikacija pristupa osnovna klasa, gdje je specifikator pristupa javni, zaštićeni ili privatni, a osnovna klasa je naziv prethodno definirane klase. Ako se ne koristi pristupni specifikator, privatno se podrazumijeva.
Nadrazred "Oblik" i izvedena klasa "Pravokutnik" može se smatrati na sljedeći način:
Kada se gornji kôd sastavi i izvrši, pojavljuje se sljedeći izlaz: "Ukupna površina: 35".
Reference
- Dave Braunschweig (2020). Nasljeđivanje i polimorfizam. Rebus zajednice. Preuzeto iz: press.rebus.community.
- Python tečaj (2020). Nasljeđivanje. Preuzeto sa: python-course.eu.
- Mentor podataka (2020). R Nasljeđivanje. Preuzeto iz: datamentor.io.
- Tutorials Point (2020). Nasljeđivanje C ++. Preuzeto sa: tutorialspoint.com.
- Neto informacije (2020). Različite vrste nasljeđivanja. Preuzeto s: net-informations.com.