Junior — Middle
Magyarázza el a különbséget egy olyan módszer között, amely ugyanazzal a névvel és szignatúrával valósul meg egy osztályban, és annak túlterhelése között, valamint a módszer felülírása között az öröklődő osztályokban.
sobes.tech MI
Válasz az MI-től
A metódus túlterhelése (overloading) akkor fordul elő, amikor egy osztályban több ugyanazzal a névvel rendelkező, de különböző szignatúrájú (különböző paraméterkészletekkel rendelkező) metódus van. Ez lehetővé teszi, hogy különböző argumentumokkal hívjuk meg a metódust, és a fordító kiválasztja a megfelelő változatot.
A metódus felülírása (overriding) egy örökölt osztályban történik, amikor ugyanazzal a szignatúrával rendelkező metódust újra implementálunk, hogy megváltoztassuk vagy kibővítsük az alapértelmezett viselkedést.
Swift példával:
class Animal {
func sound() {
print("Valamilyen hang")
}
}
class Dog: Animal {
override func sound() { // felülírás
print("ugat")
}
func sound(volume: Int) { // túlterhelés
print("Ugatás a \(volume) hangerőn")
}
}
Itt a sound() a Dog osztályban felülírja az alap osztály, az Animal, metódusát, míg a sound(volume:) egy másik paraméterkészlettel rendelkező túlterhelés.