Sobes.tech
Junior

Кога се случва презаписването на метод (overriding) в програмирането?

sobes.tech AI

Отговор от AI

Преопределянето на метода се случва при наследяване, когато подклас предоставя своя собствена реализация на вече дефиниран в родителския клас метод. Сигнатурата на метода (име, тип на връщане и брой/типове аргументи) трябва да съвпада с тази на метода в родителския клас. Това позволява да работи полиморфизмът: обект от подклас, използван като обект от родителския клас, извиква своята специфична реализация на метода.

Примери за използване:

  • Промяна на логиката на наследеното поведение.
  • Предоставяне на специфична за подклас реализация на общ интерфейс.

Ключови моменти:

  • Необходим е отношение е-един (наследяване).
  • Сигнатурата на метода трябва да съвпада.
  • Модификаторът за достъп може да бъде същият или по-малко строг, отколкото при родителския метод.
  • Не може да се препише final или static методи (в повечето езици).
// Пример на Java
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(); // Изход: Га! (преопределеният метод се извиква)
# Пример в Python
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() # Изход: Га!