Kas yra paveldėjimas ir polimorfizmas nuorodų duomenų tipu kontekste?
sobes.tech AI
Atsakymas iš AI
Paveldėjimas — tai mechanizmas, leidžiantis sukurti naują klasę (paveldimą, vaikų), kuri paveldi esamos klasės (pagrindinės, tėvų) laukus ir metodus. Tai skatina kodo pakartotinį naudojimą ir klasių hierarchijų kūrimą.
Polimorfizmas — tai galimybė skirtingų klasių objektams elgtis vienodai arba turėti skirtingą elgesį kviečiant tą patį metodą. Yra du pagrindiniai tipai: statinis (metodų perkripimas) ir dinaminis (metodų perrašymas).
Kalbant apie nuorodų tipus, paveldėjimas leidžia sukurti pagrindinės klasės kintamąjį, kuris gali nurodyti į paveldėjusio klases objektą. Polimorfizmas šiame kontekste pasireiškia tuo, kad kviečiant metodą per tokį kintamąjį, bus vykdoma faktinio objekto tipo versija, o ne nuorodos tipo (dinaminis polimorfizmas).
Java pavyzdys:
// Pagrindinė klasė
class Animal {
public void makeSound() {
System.out.println("Girdi garsą");
}
}
// Paveldėta klasė 1
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Au-au");
}
}
// Paveldėta klasė 2
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Miau-miau");
}
}
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Kintamasis tipo Animal nurodo į Dog objektą
Animal myCat = new Cat(); // Kintamasis tipo Animal nurodo į Cat objektą
myDog.makeSound(); // Iškviečia Dog metodo versiją (polimorfizmas)
myCat.makeSound(); // Iškviečia Cat metodo versiją (polimorfizmas)
}
}
Šiame pavyzdyje myDog ir myCat turi nuorodų tipą Animal, tačiau dėka polimorfizmo, kviečiant makeSound(), vykdoma atitinkama Dog ir Cat realizacija.