Iż-żewġ jiddivisaw mill-ġdid tal-metodu, iżda huma fundamentalment differenti. = isem ذات, , fil-istess klassi, risolut f'. = subklassi metodu tal-ġenitur bil-, risolut f'.
Iż-żewġ jiddivisaw mill-ġdid tal-metodu, iżda huma fundamentalment differenti. = isem ذات, , fil-istess klassi, risolut f'. = subklassi metodu tal-ġenitur bil-, risolut f'.
| Overloading | Overriding | |
|---|---|---|
| Firma | Trid tkun differenti (parametri) | Trid tkun ذatwa |
| Relazzjoni | Istess klassi | Ġenitur ↔ subklassi |
| Risolut | Waqt il-kompilazzjoni (statiku) | Waqt ir-run (dinamiku) |
| Għan | Konvenjenza / varjanti | Polimorfizmu |
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) { /* ... */ }
}
Il-kompilatur jagħżel liema print juża bbażat fuq it-tipi tal-argumenti — m'hemm l-ebda waressa involuta.
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)
Errur frekwenti hija li bil-mod involontarju overload meta kienet tintendi override (eż. erpors fil-firma). Uża dejjem @Override (Java) jew override (C#) sabiex il-kompilatur jaqbad.
L-overriding huwa l-mutur tal-polimorfizmu — il-mekkaniżmu tal-waqt tar-run li jagħmilha "interface wieħed, ħafna implementazzjonijiet" taħdem.
Taf id-differenza tipprevjeni bug klassiku: taħseb li inti sostitwixxt komportament meta inti attwalment ħloqt metodu tieni li qatt ma kien issejjaħ.