Polymorphism può essere raggiunto tramite overriding. In parole povere, il polimorfismo si riferisce alla capacità di un oggetto di fornire comportamenti diversi (utilizzare diverse implementazioni) a seconda della sua natura. In particolare, a seconda della sua posizione nella gerarchia di classi.
Method Overriding è quando un metodo definito in una superclasse o in un'interfaccia viene ridefinito da una delle sue sottoclassi, modificando in tal modo/sostituendo il comportamento fornito dalla superclasse. La decisione di chiamare un'implementazione o un'altra viene presa dinamicamente in fase di esecuzione, a seconda dell'oggetto da cui viene chiamata l'operazione. Si noti che la firma del metodo rimane la stessa quando si esegue l'override.
Method Overloading non è correlato al polimorfismo. Si riferisce alla definizione di diverse forme di un metodo (di solito ricevendo numeri o tipi di parametri diversi). Può essere visto come polimorfismo statico. La decisione di chiamare un'implementazione o un'altra è presa al momento della codifica. Nota in questo caso la firma del metodo deve cambiare.
Operator overloading è un concetto diverso, relative al polimorfismo, che si riferisce alla capacità di un dato operatore dipendente dalla lingua a comportarsi in modo diverso in base al tipo di operandi (ad esempio, +
potrebbe significare concatenazione con String
s ed inoltre con operandi numerici).
Il example in Wikipedia è piuttosto illustrativo.
Le seguenti domande relative potrebbe essere anche utile:
fonte
2012-10-15 11:00:53
sta sovraccaricando estranei a polimorfismo? Il sovraccarico è il polimorfismo del tempo di compilazione. Dove oltre la guida è il polimorfismo di runtime –