Sobes.tech
Middle

Kas yra paveldėjimas ir polimorfizmas nuorodų duomenų tipu kontekste?

sobes.tech AI

Atsakymas iš AI

Paveldėjimas — tai mechanizmas, leidžiantis sukurti naują klasę (paveldimą, vaikų), kuri paveldi esamos klasės (pagrindinės, tėvų) laukus ir metodus. Tai skatina kodo pakartotinį naudojimą ir klasių hierarchijų kūrimą.

Polimorfizmas — tai galimybė skirtingų klasių objektams elgtis vienodai arba turėti skirtingą elgesį kviečiant tą patį metodą. Yra du pagrindiniai tipai: statinis (metodų perkripimas) ir dinaminis (metodų perrašymas).

Kalbant apie nuorodų tipus, paveldėjimas leidžia sukurti pagrindinės klasės kintamąjį, kuris gali nurodyti į paveldėjusio klases objektą. Polimorfizmas šiame kontekste pasireiškia tuo, kad kviečiant metodą per tokį kintamąjį, bus vykdoma faktinio objekto tipo versija, o ne nuorodos tipo (dinaminis polimorfizmas).

Java pavyzdys:

// Pagrindinė klasė
class Animal {
    public void makeSound() {
        System.out.println("Girdi garsą");
    }
}

// Paveldėta klasė 1
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Au-au");
    }
}

// Paveldėta klasė 2
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Miau-miau");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Kintamasis tipo Animal nurodo į Dog objektą
        Animal myCat = new Cat(); // Kintamasis tipo Animal nurodo į Cat objektą

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

Šiame pavyzdyje myDog ir myCat turi nuorodų tipą Animal, tačiau dėka polimorfizmo, kviečiant makeSound(), vykdoma atitinkama Dog ir Cat realizacija.