Sobes.tech
Junior

Kāda ir atšķirība starp mantošanu un polimorfismu?

sobes.tech AI

Atbilde no AI

Mantošana ir mehānisms, kas ļauj klasei (atvasinātājs, apakšklaše) mantoēt citas klases (vecāks, superklase) laukus un metodes. Tas veicina koda atkārtotu izmantošanu.

Polimorfisms ir iespēja izmantot vienu un to pašu interfeisu, lai attēlotu dažādas pamatformas. Java kontekstā tas nozīmē, ka atsauces tipa mainīgais var norādīt uz objekta sava paša tipa vai jebkura no tā apakštipiem. Atšķir divi polimorfisma veidi: kompilācijas laika polimorfisms (metožu pārslodze) un izpildes laika polimorfisms (metožu pārrakstīšana).

Galvenā atšķirība:

  • Mantošana nosaka attiecības starp klasēm (vecāks-mazulis) un ļauj atkārtoti izmantot kodu.
  • Polimorfisms ļauj piekļūt dažādiem objektiem caur kopēju interfeisu, izpildot atbilstošo metodi atkarībā no faktiskā objekta tipa izpildes laikā.

Polimorfisma piemērs izpildes laikā:

class Animal {
    public void sound() {
        System.out.println("Dzīvnieks izdala skaņu");
    }
}

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

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("Mau-mau");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Polimorfisms: atsauce uz Animal tipu norāda uz Dog objektu
        Animal myCat = new Cat(); // Polimorfisms: atsauce uz Animal tipu norāda uz Cat objektu

        myDog.sound(); // Izsauc metodi sound() no klases Dog
        myCat.sound(); // Izsauc metodi sound() no klases Cat
    }
}