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:) е претоварване на метода с друг набор от параметри.