Sobes.tech
Junior

Mis vahe on pärandumil ja polümorfismil?

sobes.tech AI

Vastus AI-lt

Pärilusus on mehhanism, mis võimaldab klassil (järglane, alamklass) pärida teise klassi (vanem, superklass) välju ja meetodeid. See soodustab koodi korduvkasutust.

Polümorfism on võimalus kasutada sama liidest, et esitada erinevaid alusvorme. Java kontekstis tähendab see, et viiteliigi muutuja võib viidata oma tüübi või mis tahes selle alamliigi objekti. Erinevad on kompileerimise ajal toimiv polümorfism (meetodite ülekoormus) ja täitmise ajal toimiv polümorfism (meetodite ülekirjutamine).

Peamine erinevus:

  • Pärilusus määrab suhted klasside vahel (vanem-laps) ja võimaldab koodi korduvkasutust.
  • Polümorfism võimaldab pöörduda erinevate objektide poole ühise liidese kaudu, täites vastava meetodi sõltuvalt objekti tegelikust tüübist täitmise ajal.

Polümorfismi näide täitmise ajal:

class Animal {
    public void sound() {
        System.out.println("Loom teeb häält");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Haug-haug");
    }
}

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(); // Polümorfism: viit tüüpi Animal viitab Dog objektile
        Animal myCat = new Cat(); // Polümorfism: viit tüüpi Animal viitab Cat objektile

        myDog.sound(); // Kutsub välja meetodi sound() klassist Dog
        myCat.sound(); // Kutsub välja meetodi sound() klassist Cat
    }
}