Sobes.tech
Junior — Middle

Обяснете разликата между метод, който се реализира със същото име и сигнатура в класа и неговото пренатоварване, и презаписването на метода в наследените класове.

sobes.tech AI

Отговор от AI

Претоварване на метод (overloading) се случва, когато в един клас се създадат няколко метода със същото име, но с различни сигнатури (различни набори от параметри). Това позволява извикване на метода с различни аргументи, а компилаторът избира подходящия вариант.

Презаписване на метод (overriding) се случва в наследяващ клас, когато метод със същата сигнатура като в базовия клас се реализира отново, за да се промени или разшири поведението на базовия метод.

Пример на Swift:

class Animal {
    func sound() {
        print("Някакъв звук")
    }
}

class Dog: Animal {
    override func sound() { // презаписване
        print("Лай")
    }

    func sound(volume: Int) { // претоварване
        print("Лай на ниво \(volume)")
    }
}

Тук sound() в класа Dog презаписва метода на базовия клас Animal, а sound(volume:) е претоварване на метода с друг набор от параметри.