Junior
Kuo skiriasi paveldėjimas ir polimorfizmas?
sobes.tech AI
Atsakymas iš AI
Paveldėjimas yra mechanizmas, leidžiantis klasei (paveldėtoja, pogrupa) paveldėti kitos klasės (tėvo, superklasės) laukus ir metodus. Tai skatina kodo pakartotinį naudojimą.
Polimorfizmas — tai galimybė naudoti tą patį sąsają, kad būtų galima atstovauti skirtingas pagrindines formas. Java kontekste tai reiškia, kad nuorodos kintamasis gali nurodyti į savo paties tipo objektą arba į bet kurio iš jo pogrupių objektą. Skiriamas kompiliacijos laiko polimorfizmas (metodų perkripimas) ir vykdymo laiko polimorfizmas (metodų perrašymas).
Pagrindinis skirtumas:
- Paveldėjimas apibrėžia santykius tarp klasių (tėvas-vaikas) ir leidžia pakartotinai naudoti kodą.
- Polimorfizmas leidžia prieiti prie skirtingų objektų per bendrą sąsają, vykdant atitinkamą metodą priklausomai nuo tikrojo objekto tipo vykdymo metu.
Pavyzdys vykdymo laiko polimorfizmo:
class Animal {
public void sound() {
System.out.println("Gyvūnas skleidžia garsą");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Gau-gau");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Miau-miau");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Polimorfizmas: kintamasis tipo Animal, kuris nurodo į Dog objektą
Animal myCat = new Cat(); // Polimorfizmas: kintamasis tipo Animal, kuris nurodo į Cat objektą
myDog.sound(); // Kviesia Dog klasės sound() metodą
myCat.sound(); // Kviesia Cat klasės sound() metodą
}
}