Esempio:Java: la ricorsione nel main-class chiama sottoclasse metodo invece del proprio metodo
class MainClass {
public doIt() {
...
else doIt();
}
}
class SubClass extends MainClass {
@Override
public doIt() {
super.doIt();
...
}
}
Ora il problema è:
- io chiamo SubClass.doIt()
- MainClass .doIt() è chiamato
- MainClass.doIt() effettua la ricorsione chiamando doIt()
Ma: il SubClass.doIt() viene chiamato anziché MainClass.doIt()
Questo comportamento è molto strano e i problemi sono programmati! Ho provato a chiamare la ricorsione con this.doIt() ma questo non ha aiutato. Qualcuno ha un'idea?
Grazie mille per le risposte, questo problema è stato risolto.
Questo è il polimorfismo per te. – GriffeyDog
"* Questo è un comportamento molto strano *" non proprio, 'else doIt()' è uguale a 'else this.doIt()' ma 'this' si riferisce all'istanza corrente e grazie al codice di associazione dinamica (meccanismo di polimorfismo) dal metodo di classe più vicino al tipo corrente di 'this' è chiamato. Dal momento che la classe più vicina a 'Sottoclassella' che contiene' doIt' è 'Sottoclassella' stessa, questo codice viene invocato. – Pshemo
Questo è il comportamento presunto. –