Sobes.tech
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ą
    }
}