Python je objektno orijentirani programski jezik. U objektno orijentiranom programskom jeziku stvaramo klase i izvodimo predviđenu funkcionalnost. Nasljeđivanje je temeljna značajka objektno orijentiranih programskih jezika. Nasljeđivanje se može definirati kao sposobnost jedne klase da naslijedi sve funkcije i svojstva druge klase. Nasljeđivanje u osnovi omogućuje proširivanje svojstava postojeće klase. Nasljeđivanje se temelji na dva glavna pojma:
- Roditeljska klasa ili osnovna klasa
- Podređeni razred ili izvedeni razred
Roditeljska klasa je klasa koja omogućuje nasljeđivanje ostalih klasa. Naziva se i osnovnom klasom. Klasa Child ili izvedena klasa je ona klasa koja nasljeđuje sva svojstva i funkcije druge klase. Nasljeđivanje promiče nekoliko prednosti, t.j.e., to je predstavljanje fenomena nasljeđivanja u stvarnom svijetu. Potiče ponovnu upotrebu koda. Ako je funkcija definirana u jednoj klasi, druga klasa može naslijediti ovu klasu i koristiti sve postojeće funkcije. Za obavljanje sličnih zadataka nije potrebno iznova i iznova pisati isti kod. Nasljeđivanje se primjenjuje na više razina. Na primjer, ako se klasa B nasljeđuje od A, a klasa C nasljeđuje od klase B, tada klasa C ima sva svojstva klase B i klasa A. Sintaksa nasljeđivanja je sljedeća:
Klasa roditelja:Detalji implementacije nadređene klase
razred ChildClass:
Pojedinosti o provedbi klase djeteta
Iako podređena klasa ima pristup svim značajkama i funkcijama roditeljske klase, ona može dodati i svoje nove značajke i funkcije.
Ovaj članak opisuje i pokriva sve aspekte nasljeđivanja Pythona.
Implementacija nasljeđivanja u Pythonu
Nasljeđivanje se može primijeniti u brojnim situacijama. Pretpostavimo da gradite softverski sustav za sveučilište. Može se sastojati od više dionika poput učenika, nastavnika, osoblja itd. Dakle, svaka osoba ima ime, dob, e-poštu i druga uobičajena svojstva. Nije potrebno zasebno deklarirati sva svojstva u svakoj klasi. Možemo stvoriti klasu osobe, a sve klase dionika mogu naslijediti sva uobičajena svojstva i funkcije iz klase osobe. U ovom slučaju nema potrebe za ponovnim upisivanjem zajedničkih svojstava u svaku klasu. Slično tome, možemo uzeti u obzir klasu životinja. Na ovom svijetu postoje stotine vrsta životinja. Sve životinje jedu, spavaju i imaju neke vrste. Ovaj se koncept također može primijeniti nasljeđivanjem.
Razmotrimo životinju kao super klasu i provedimo nasljeđe. U donjem primjeru stvorili smo jednu klasu životinja. Klasa životinja je roditeljska klasa. Štoviše, stvorili smo klase pasa i mačaka koje nasljeđuju svojstva i funkcije klase životinja. Ključna riječ pass koristi se u podređenoj klasi kada ne moramo implementirati proširenu funkcionalnost u podređenoj klasi.
#kreiranje roditeljske klaserazred Životinje:
#inicijalizacija funkcija
#inicijalizacija imena životinje i vrste vrste
def __init __ (self, name, specie_type):
sebe.ime = ime
sebe.specie_type = specie_type
#a funkcija za ispis imena životinje
def ime ispisa (samo):
print ("Ime životinje je:", samo.Ime)
#a funkcija za ispis vrste vrste životinja
def printspecie (self):
print ("Vrsta vrste je:", self.specie_type)
#stvaranje klase pasa kao klase djeteta klase životinja
razred pas (životinja):
# bez proširenja ili preinake
proći
#now klasa pasa ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase pas
dogObj = Pas ("Pas", "mesojed")
pasObj.Naziv ispisa()
pasObj.printspecie ()
#stvaranje klase mačaka kao klase djece klase životinja
razred Mačka (životinja):
#funkcija inicijalizacije klase mačaka
def __init __ (samo):
#pozivanje i korištenje funkcije inicijalizacije klase životinja
Životinja.__init __ (ja, "mačka", "mesožder sisavac")
#now klasa mačaka ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase mačaka
catObj = Mačka ()
mačkaObj.Naziv ispisa()
mačkaObj.printspecie ()
Izlaz
The "Životinja.__init __ (ja, "mačka", "mesožder sisavac") " poziv je funkcija inicijalizacije klase Animal.
Funkcija super ()
Python pruža ugrađenu super () funkciju za nasljeđivanje svih svojstava i funkcija roditeljske klase. Kada koristimo funkciju super (), tada nije potrebno spominjati ime roditeljske klase kao što smo to činili u "Životinja.__init __ (ja, "mačka", "mesožder sisavac") " ali funkcija super () automatski usmjerava na roditeljsku klasu. Upotrijebimo super funkciju.
#kreiranje roditeljske klaserazred Životinje:
#inicijalizacija funkcija
#inicijalizacija imena životinje i vrste vrste
def __init __ (self, name, specie_type):
sebe.ime = ime
sebe.specie_type = specie_type
#a funkcija za ispis imena životinje
def ime ispisa (samo):
print ("Ime životinje je:", samo.Ime)
#a funkcija za ispis vrste vrste životinja
def printspecie (self):
print ("Vrsta vrste je:", self.specie_type)
#stvaranje klase pasa kao klase djeteta klase životinja
razred pas (životinja):
# koristeći super () funkciju
def __init __ (self, name, specie_type):
super().__init __ (ime, vrsta_tipa)
#now klasa pasa ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase pas
dogObj = Pas ("Pas", "mesojed")
pasObj.Naziv ispisa()
pasObj.printspecie ()
#stvaranje klase mačaka kao klase djece klase životinja
razred Mačka (životinja):
#funkcija inicijalizacije klase mačaka
# koristeći super () funkciju
def __init __ (self, name, specie_type):
super().__init __ (ime, vrsta_tipa)
#now klasa mačaka ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase mačaka
catObj = Mačka ("mačka", "mesožder sisavac")
mačkaObj.Naziv ispisa()
mačkaObj.printspecie ()
Izlaz
Sad ćemo dodati još neke funkcionalnosti u dječjim razredima. Svaka klasa nasljeđuje zajednička svojstva i funkcije od roditeljske klase, ali podređena klasa može imati neku dodatnu klasu koja je namijenjena ovoj određenoj klasi. Ajmo sada stvoriti neka dodatna svojstva i funkcije u klasi pasa i mačaka.
#kreiranje roditeljske klaserazred Životinje:
#inicijalizacija funkcija
#inicijalizacija imena životinje i vrste vrste
def __init __ (self, name, specie_type):
sebe.ime = ime
sebe.specie_type = specie_type
#a funkcija za ispis imena životinje
def ime ispisa (samo):
print ("Ime životinje je:", samo.Ime)
#a funkcija za ispis vrste vrste životinja
def printspecie (self):
print ("Vrsta vrste je:", self.specie_type)
#stvaranje klase pasa kao klase djeteta klase životinja
razred pas (životinja):
# koristeći super () funkciju
#pet ime je novo dodana funkcionalnost
def __init __ (self, name, specie_type, pet_name):
super().__init __ (ime, vrsta_tipa)
sebe.pet_name = pet_name
#stvaranje nove funkcije
def printpetname (samo):
print ("Ime kućnog ljubimca je:", samo.ime ljubimca)
#now klasa pasa ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase pas
dogObj = Pas ("Pas", "mesojed", "Max")
pasObj.Naziv ispisa()
pasObj.printspecie ()
pasObj.printpetname ()
#stvaranje klase mačaka kao klase djece klase životinja
razred Mačka (životinja):
#funkcija inicijalizacije klase mačaka
# koristeći super () funkciju
#dodavanje svojstava hrane i imena kućnih ljubimaca
def __init __ (samo, ime, vrsta, vrsta, hrana, ime_ljubazni):
super().__init __ (ime, vrsta_tipa)
sebe.hrana = hrana
sebe.pet_name = pet_name
#new funkcija za pristup informacijama o hrani
def printfood (samo):
print ("Mačka voli:", samostalno.hrana)
# nova funkcija za ime kućnog ljubimca
def printpetname (samo):
print ("Ime kućnog ljubimca je:", samo.ime ljubimca)
#now klasa mačaka ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase mačaka
catObj = Mačka ("mačka", "mesožder sisavac", "keks", "tratinčica")
mačkaObj.Naziv ispisa()
mačkaObj.printspecie ()
Izlaz
Prevladavajuće funkcije
Nadjačavanje funkcije važan je pojam u nasljeđivanju. Funkcija se naziva nadjačana funkcija ako je ime funkcije isto u roditeljskim i podređenim razredima, ali je implementacija ili funkcionalnost funkcije različita u svakoj klasi. Pogledajmo primjer nadjačane funkcije u klasi Animal. U donjem primjeru imamo funkciju prehrane u razredima životinja, kao i u razredima djece (pas i mačka). Ime funkcije je isto u razredima, ali je implementacija drugačija.
#kreiranje roditeljske klaserazred Životinje:
def jesti (samo):
print ("Sve životinje jedu hranu")
#creating object
animalObj = Animal ()
#calling function
životinjaObj.jesti()
#creating class pasa
razred pas (životinja):
def jesti (samo):
print ("Pas jede meso")
#creating object
dogObj = Pas ()
#calling function
pasObj.jesti()
razred Mačka (životinja):
def jesti (samo):
print ("Mačka jede kekse i neku posebnu hranu")
#creating object
catObj = Mačka ()
#calling function
mačkaObj.jesti()
Izlaz
Zaključak
Nasljeđivanje je jedan od temeljnih koncepata objektno orijentiranih programskih jezika. Korištenjem nasljeđivanja stvaramo podređene klase koje nasljeđuju sve funkcije i svojstva nadređene klase. Nasljeđivanje potiče ponovnu upotrebljivost koda. Ovaj članak na primjerima objašnjava nasljeđivanje u Pythonu.