Junior — Middle
Објасните разлику између метода који се реализује са истим именом и сигнатуром у класи и његове пренатоварености, и преформулисања метода у наслеђеним класама.
sobes.tech АИ
Одговор од АИ
Preopterećenje metode (overloading) događa se kada se u istoj klasi kreira više metoda s istim imenom, ali različitim potpisima (različitim skupovima parametara). To omogućava pozivanje metode s različitim argumentima, a kompajler odabire odgovarajuću verziju.
Prepisivanje metode (overriding) događa se u naslijeđenoj klasi, kada se metoda s istim potpisom kao u osnovnoj klasi ponovno implementira kako bi se promijenilo ili proširilo ponašanje osnovne metode.
Primjer u Swift:
class Animal {
func sound() {
print("Neki zvuk")
}
}
class Dog: Animal {
override func sound() { // prepisivanje
print("Lajanje")
}
func sound(volume: Int) { // preopterećenje
print("Lajanje na glas \(volume)")
}
}
Ovdje, sound() u klasi Dog prepisuje metodu osnovne klase Animal, a sound(volume:) je preopterećenje metode s drugim skupom parametara.