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