Sobes.tech
Junior

Kas ir mantošana un polimorfisms attiecīgajos datu tipos?

sobes.tech AI

Atbilde no AI

Mantošana ir mehānisms, kas ļauj vienai klasei (mantotājklasei, apakšklasei) pārņemt citas klases (pamatklases, vecāklases) īpašības un uzvedību. Tas veicina koda atkārtotu izmantošanu un klases hierarhiju veidošanu.

Polimorfisms ir spējas dažādu klases objektu reaģēt uz to pašu ziņojumu (metodes izsaukumu) dažādi, atkarībā no to konkrētā tipa. Mantošanas kontekstā tas bieži izpaužas caur pamatklases metožu pārrakstīšanu apakšklasē.

Piemērs (Java):

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

// Apakšklase
class Dog extends Animal {
    @Override // Metodes pārrakstīšana
    public void makeSound() {
        System.out.println("Gau!");
    }
}

// Apakšklase
class Cat extends Animal {
    @Override // Metodes pārrakstīšana
    public void makeSound() {
        System.out.println("Mau!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Objekts Dog, bet atsauce uz Animal
        Animal myCat = new Cat(); // Objekts Cat, bet atsauce uz Animal

        myDog.makeSound(); // Izsauc Dog metodi
        myCat.makeSound(); // Izsauc Cat metodi
    }
}

Šajā piemērā:

  • Mantošana: Klases Dog un Cat manto no Animal.
  • Polimorfisms: Mainīgie myDog un myCat norāda uz Dog un Cat objektu attiecīgi, lai gan to tips ir Animal. Izsaucot makeSound(), tiek izpildīta objekta metode, nevis atsauces tips.