Sobes.tech
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.