Mindkettő újrahasználja a metódus , de alapvetően különbözőek. = ugyanaz az név, , ugyanabban az osztályban, feloldva. = egy alosztály a fölérendelt metódust , feloldva.
Mindkettő újrahasználja a metódus , de alapvetően különbözőek. = ugyanaz az név, , ugyanabban az osztályban, feloldva. = egy alosztály a fölérendelt metódust , feloldva.
| Túlterhelés | Felülírás | |
|---|---|---|
| Aláírás | Eltérőnek kell lennie (params) | Azonosnak kell lennie |
| Kapcsolat | Ugyanaz az osztály | Fölérendelt ↔ alosztály |
| Feloldva | Fordítási idő (statikus) | Futási idő (dinamikus) |
| Cél | Kényelem / variánsok | Polimorfizmus |
class Printer {
void print(String s) { System.out.println(s); }
void print(int n) { System.out.println(n); } // same name, diff param
void print(String s, int times) { /* ... */ }
}
A fordító az argumentumok típusa alapján választja ki, hogy melyik print — semmilyen öröklődés nincsen.
class Animal { String speak() { return "..."; } }
class Dog extends Animal {
@Override
String speak() { return "Woof"; } // replaces Animal.speak()
}
Animal a = new Dog();
a.speak(); // "Woof" — runtime picks Dog's version (dynamic dispatch)
Egy gyakori hiba, hogy véletlenül túlterhelik amikor felül akartad írni (például sajtóhiba az aláírásban). Mindig használj @Override (Java) vagy override (C#) hogy a fordító elfogja.
A felülírás a polimorfizmus motora — a futási idejű mechanizmus, amely az "egy felület, sok implementáció" elvet működteti.
A különbség ismerete megelőz egy klasszikus hibát: azt gondolni, hogy megváltoztattad a viselkedést, amikor valójában egy másik, soha meg nem hívott metódust hoztál létre.
IT interjúkérdések gyűjteménye részletes válaszokkal — Juniortól Seniorig.
Adományozás