Loro-lorone nggunakake maneh jeneng metode, nanging beda banget. = jeneng padha, , ing kelas padha, dirampungake ing . = subkelas metode induk karo , dirampungake ing .
Loro-lorone nggunakake maneh jeneng metode, nanging beda banget. = jeneng padha, , ing kelas padha, dirampungake ing . = subkelas metode induk karo , dirampungake ing .
| Overloading | Overriding | |
|---|---|---|
| Sinatara | Kudu beda (parameter) | Kudu identik |
| Sesambung | Kelas padha | Induk ↔ subkelas |
| Dirampungake | Wektu komilasi (statis) | Wektu jalan (dinamis) |
| Tujuan | Kemudahan / varian | Polimorfisme |
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) { /* ... */ }
}
Kompilator milih print endi adhedhasar tipe argumen — ora ana warisan sing melu.
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)
Kesalahan sing asring lumaku yaiku nganggo overloading keblinger nalika padha pengin overriding (contone: salah ngetik ing sinatara). Tansah nggunakake @Override (Java) utawa override (C#) supaya kompilator bisa ketangkep.
Overriding minangka mesin polimorfisme — mekanisme wektu jalan sing ndadekake "siji antarmuka, akeh implementasi" bisa bisa.
Ngerti bedane cegah kutu klasik: padha kira-kira ganti kelakuan nanging sejatine nggawa metode kaping loro sing ora nate dipanggil.