Sobes.tech
Junior

Šta su nasleđivanje i polimorfizam u referentnim tipovima podataka?

sobes.tech АИ

Одговор од АИ

Наслеђивање је механизам који омогућава једној класи (подкласи, наследној класи) да преузме својства и понашање друге класе (основне, родитељске класе). Ово подстиче поновну употребу кода и стварање хијерархија класа.

Полиморфизам је способност објеката различитих класа да реагују различито на исту поруку (позив методе), у зависности од њиховог конкретног типа. У контексту наслеђивања, то се често манифестује преко преоптерећења метода основне класе у класи наследнику.

Пример (Java):

// Основна класа
class Animal {
    public void makeSound() {
        System.out.println("Животиња прави звук");
    }
}

// Класа наследник
class Dog extends Animal {
    @Override // Преоптерећење метода
    public void makeSound() {
        System.out.println("Гауу!");
    }
}

// Класа наследник
class Cat extends Animal {
    @Override // Преоптерећење метода
    public void makeSound() {
        System.out.println("Мјау!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Објекат Dog, али референца типа Animal
        Animal myCat = new Cat(); // Објекат Cat, али референца типа Animal

        myDog.makeSound(); // Позива метод Dog
        myCat.makeSound(); // Позива метод Cat
    }
}

У овом примеру:

  • Наслеђивање: Класе Dog и Cat наслеђују од Animal.
  • Полиморфизам: Променљиве myDog и myCat реферишу на објекте Dog и Cat редом, иако имају тип Animal. При позиву makeSound() се извршава метод објекта, а не типа референце.