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.