Junior
Mis on pärimine objektorienteeritud programmeerimises (OOP)?
sobes.tech AI
Vastus AI-lt
Mehhanism, mis võimaldab luua uusi klasse (pärilasi) olemasolevate (vanemate) põhjal, omandades nende omadused ja meetodid. See soodustab koodi taaskasutust ja klasside hierarhia organiseerimist.
Põhikonceptsioonid:
- Vanemklass (Põhiklass, Superklass): Klass, millest pärandatakse omadused ja meetodid.
- Lapsklass (Pärandklass, Alklass): Klass, mis pärib omadused ja meetodid vanemklassist.
- Väljundandmed:
- Lapsklass pärib kõik avalikud ja kaitstud väljad ning meetodid vanemklassist. Privaatliikmed vanemklassist ei ole otseselt kättesaadavad lapsklassis.
- Lapsklass võib lisada oma välju ja meetodeid.
- Lapsklass võib üle kirjutada (muuta implementatsiooni) pärandatud meetodeid vanemklassist (polümorfism).
Näide Pythonis:
class Animal:
# Loomade põhiklass
def __init__(self, name):
self.name = name
def speak(self):
# Üldine meetod loomade häälte jaoks
pass
class Dog(Animal):
# Koerte alamklass, pärib Animalist
def __init__(self, name, breed):
super().__init__(name) # Vanemklassi konstruktor
self.breed = breed
def speak(self):
# Üle kirjutada meetod speak koerte jaoks
print(f"{self.name} ütleb: Woof!")
class Cat(Animal):
# Kasside alamklass, pärib Animalist
def speak(self):
# Üle kirjutada meetod speak kasside jaoks
print(f"{self.name} ütleb: Meow!")
# Kasutades pärandumist
my_dog = Dog("Buddy", "Labrador")
my_cat = Cat("Whiskers")
my_dog.speak() # Väljund: Buddy ütleb: Woof!
my_cat.speak() # Väljund: Whiskers ütleb: Meow!
print(my_dog.name) # Väljund: Buddy
print(my_dog.breed) # Väljund: Labrador
Päriluse tüübid (sõltuvalt programmeerimiskeelest):
- Üksik pärilustus: Klass võib pärida ainult ühest vanemklassist.
- Mitmepärilusus: Klass võib pärida mitmest vanemklassist.
Päriluse eelised:
- Koodi korduvkasutus: Ühiste omaduste ja meetodite üleviimine põhiklassi, et vältida dubleerimist.
- Klassehierarhia: Klasside organiseerimine loogilisse struktuuri, mis peegeldab "on-ole" (is-a) suhteid.
- Laiendatavus: Uue funktsionaalsuse lisamine, luues uusi alamklasse, ilma olemasolevat koodi muutmata.
- Polümorfism: Võimalus töödelda erinevate klasside objekte ühtemoodi, kasutades viidet põhiklassile.
Päriluse puudused:
- Karm seos: Muudatused põhiklassis võivad mõjutada kõiki alamklasse.
- "Dikta" probleem (mitmepäriluses): Ebamäärasus, kui pärandatakse kahest klassist, millel on ühine esivanem.
- Ülemäärane kasutamine: Võib viia keerukate ja hierarhiliste struktuuride tekkimiseni, mida on raske mõista ja hooldada.