Zote zinatatumia jina la moja upya, lakini zinasimu sana. = jina moja, , katika darasa moja, kutatuliwa kwa . = kidarasa kikubwa njia ya mzazi kwa , kutatuliwa kwa .
Zote zinatatumia jina la moja upya, lakini zinasimu sana. = jina moja, , katika darasa moja, kutatuliwa kwa . = kidarasa kikubwa njia ya mzazi kwa , kutatuliwa kwa .
| Kupenya kwa jina moja | Kuandika upya | |
|---|---|---|
| Saini | Lazima liwe tofauti (vigezo) | Lazima liwe sawa |
| Uhusiano | Darasa moja | Mzazi ↔ kidarasa kikubwa |
| Kutatuliwa | Wakati wa kusanambuka (statiki) | Wakati wa utekelezaji (dinamiki) |
| Lengo | Urahisi / mbadiliko | Polymorphism |
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) { /* ... */ }
}
Msanambuki anachagua ni print ipi kulingana na aina za hoja — hapana urithi.
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)
Kosa la kawaida ni kupenya kwa jina moja bila kukusudia wakati ulimaanisha kuandika upya (k.m. hitilafu katika saini). Tumia @Override (Java) au override (C#) ili msanambuki ukamata.
Kuandika upya ni injini ya polymorphism — njia ya utekelezaji inayofanya "kiolesura kimoja, utekelezaji wengi" ifanye kazi.
Kujua tofauti husambaza hitilafu ya kawaida: kufikiri umebadilisha tabia wakati umefanya njia ya pili ambayo haisomeki.
Maktaba ya maswali ya mahojiano ya IT yenye majibu ya kina — kutoka Junior hadi Senior.
Changia