Sobes.tech
Junior — Middle

Vysvetlite rozdiel medzi metódou, ktorá je implementovaná s rovnakým názvom a podpisom v triede a jej preťažením, a prepísaním metódy v dedičných triedach.

sobes.tech AI

Odpoveď od AI

Preťažovanie metódy (overloading) nastáva, keď v rovnakej triede vytvoríme viacero metód s rovnakým názvom, ale s rôznymi podpismi (rôznymi sadami parametrov). To umožňuje volať metódu s rôznymi argumentmi a kompilátor vyberie vhodnú verziu.

Prepisovanie metódy (overriding) sa deje v dedenej triede, keď sa metóda so rovnakou podpisom ako v základnej triede znovu implementuje, aby sa zmenilo alebo rozšírilo správanie základnej metódy.

Príklad v Swift:

class Animal {
    func sound() {
        print("Nejaký zvuk")
    }
}

class Dog: Animal {
    override func sound() { // prepisovanie
        print("Štekanie")
    }

    func sound(volume: Int) { // preťažovanie
        print("Štekanie na hlasitosť \(volume)")
    }
}

Tu sound() v triede Dog prepíše metódu základnej triedy Animal, a sound(volume:) je preťaženie metódy s iným množstvom parametrov.