Sobes.tech
Junior

Kas yra paveldėjimas ir polimorfizmas nuorodų duomenų tipuose?

sobes.tech AI

Atsakymas iš AI

Paveldėjimas yra mechanizmas, leidžiantis vienai klasei (paveldėjimo klasei, vaikų klasei) paveldėti savybes ir elgesį iš kitos klasės (pagrindinės, tėvų klasės). Tai skatina kodo pakartotinį naudojimą ir klasių hierarchijų kūrimą.

Polimorfizmas yra objekto iš skirtingų klasių gebėjimas reaguoti į tą patį pranešimą (metodo kvietimą) skirtingai, priklausomai nuo jų konkretaus tipo. Paveldėjimo kontekste tai dažnai pasireiškia per pagrindinės klasės metodų perrašymą vaikų klasėje.

Pavyzdys (Java):

// Pagrindinė klasė
class Animal {
    public void makeSound() {
        System.out.println("Gyvūnas skleidžia garsą");
    }
}

// Vaikų klasė
class Dog extends Animal {
    @Override // Metodo perrašymas
    public void makeSound() {
        System.out.println("Au!");
    }
}

// Vaikų klasė
class Cat extends Animal {
    @Override // Metodo perrašymas
    public void makeSound() {
        System.out.println("Miau!");
    }
}

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

        myDog.makeSound(); // Iškviečia Dog metodą
        myCat.makeSound(); // Iškviečia Cat metodą
    }
}

Šiame pavyzdyje:

  • Paveldėjimas: Klasės Dog ir Cat paveldi iš Animal.
  • Polimorfizmas: Kintamieji myDog ir myCat nurodo į Dog ir Cat objektus atitinkamai, nors jų tipas yra Animal. Kai kviečiama makeSound(), vykdomas objekto metodas, o ne nuorodos tipas.