Sobes.tech
Junior

Kada dolazi do prepisivanja metode (overriding) u programiranju?

sobes.tech АИ

Одговор од АИ

Переопределение метода се дешава у наследствујењу, када подкласа пружа своју сопствену реализацију метода који је већ дефинисан у родитељској класи. Потпис метода (име, тип повратне вредности и број/тип аргумената) мора се поклапати са методом у родитељској класи. Ово омогућава рад полиморфизма: објекат подкласе, коришћен као објекат родитељске класе, позива своју специфичну реализацију метода.

Примери употребе:

  • Промена логике наследеног понашања.
  • Обезбеђивање специфичне за подкласу реализације за заједнички интерфејс.

Кључне тачке:

  • Потребан је однос је-један (наследство).
  • Потпис метода мора се поклапати.
  • Модификатор приступа може бити исти или мање строги од оног у родитељској методи.
  • Не може се преоптеретити final или static методе (у већини језика).
// Пример у Јави
class Animal {
    public void makeSound() {
        System.out.println("Генерички звук животиње");
    }
}

class Dog extends Animal {
    @Override // Анотација која указује на преоптерећење
    public void makeSound() {
        System.out.println("Гауу!");
    }
}

// Коришћење
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Излаз: Генерички звук животиње
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Излаз: Гауу! (позива се преоптерећена метода)
# Пример у Питону
class Animal:
    def make_sound(self):
        print("Генерички звук животиње")

class Dog(Animal):
    def make_sound(self): # Преоптерећење методе
        print("Гауу!")

# Коришћење
# animal = Animal()
# animal.make_sound() # Излаз: Генерички звук животиње
#
# dog = Dog()
# dog.make_sound() # Излаз: Гауу!