Junior
Mis on pärimine ja polümorfism viiteandmetüüpides?
sobes.tech AI
Vastus AI-lt
Pärilimine — see on mehhanism, mis võimaldab uuel klassil (alamklass/poegklass) pärida olemasoleva klassi (superklass/vanemklass) omadused (väljad) ja käitumise (meetodid), lai laiendada või üle kirjutada funktsionaalsust. See soodustab koodi korduvkasutust ja "on" (is-a) suhete loomist.
Polümorfism — see on võimalus erinevatel klassidel olevatel objektidel vastata samale meetodi nimele erinevalt, sõltuvalt nende konkreetset tüübist täitmise ajal. See tagab koodi paindlikkuse ja laiendatavuse, võimaldades töödelda alamklasside objekte superklassist viitega.
Need kontseptsioonid mängivad võtmerolli viidetüüpides (klassides):
- Pärilikkus: Alamklass saab juurdepääsu superklassi liikmetele ning võib lisada oma või muuta pärandatud meetodite käitumist (üle kirjutamine — overriding). Alamklassi objekt võib olla kasutatav igal pool, kus oodatakse superklassi objekti.
- Polümorfism: Erinevad objektid, mis kuuluvad ühte pärilushierarhiasse, võivad olla töödeldud ühe ja sama koodiga, kutsudes sama meetodi, kuid selle teostus sõltub konkreetse objekti tüübist täitmise ajal.
Näide Java-s:
// Superklass (vanemklass)
class Animal {
public void makeSound() {
System.out.println("Hääl väljastab");
}
}
// Alamklass (poegklass), pärib Animalist
class Dog extends Animal {
// Üle kirjutada meetod superklassist
@Override
public void makeSound() {
System.out.println("Haug!");
}
}
// Alamklass (poegklass), pärib Animalist
class Cat extends Animal {
// Üle kirjutada meetod superklassist
@Override
public void makeSound() {
System.out.println("Miau!");
}
}
// Polümorfismi näide
public class PolymorphismExample {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // superklassi objekt
Animal myDog = new Dog(); // alamklassi objekt, viide superklassile
Animal myCat = new Cat(); // alamklassi objekt, viide superklassile
myAnimal.makeSound(); // Tulemuseks: Hääl väljastab
myDog.makeSound(); // Tulemuseks: Haug! (polümorfism — kutsutakse Dog meetod)
myCat.makeSound(); // Tulemuseks: Miau! (polümorfism — kutsutakse Cat meetod)
}
}