L'overloading del metodo, noto anche come overload di funzioni o polimorfismo del tempo di compilazione, è un concetto di avere due o più metodi con lo stesso nome ma firma diversa nello stesso ambito. Esistono molti linguaggi di programmazione che supportano questa funzione: Ada, C ++, C #, D e Java.
Esempio di sovraccarico del metodo in C #
classe OverloadShapes {float Polygon (int raggio, float pi) {float circleArea = pi * raggio * raggio; } int Poligono (int length, int larghezza) {int rectangleArea = lunghezza * larghezza; } int Poligono (lato int) {int squareArea = lato * lato; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | classe OverloadShapes {float Polygon (int raggio, float pi) {float circleArea = pi * raggio * raggio; } int Poligono (int length, int larghezza) {int rectangleArea = lunghezza * larghezza; } int Poligono (lato int) {int squareArea = lato * lato; }} |
Come mostrato nell'esempio precedente, il metodo 'Polygon' viene sovraccaricato 3 volte con una firma del metodo diversa, ovvero il tipo o il numero di parametri sono diversi.
Metodo Overriding
L'override del metodo, noto anche come override della funzione o polimorfismo Run time, è una funzionalità OOP che consente a una classe figlia di fornire la propria implementazione al metodo definito nella classe padre. L'implementazione nella classe figlio sovrascrive la definizione del metodo nella classe base, a condizione che il metodo nella classe figlio abbia lo stesso nome, firma e tipo di ritorno.
Esempio di metodo che esegue l'override in C #
classe Source1 {public void draw () {Console.Writeline ("I am in class Source1"); }} classe Source2 estende Source1 {public void draw () {Console.Writeline ("I am in class Source2"); }}1 2 3 4 5 6 7 8 9 10 | class Source1 {public void draw () {Console. Writeline ("I am in class Source1"); }} classe Source2 estende Source1 {public void draw () {Console. Writeline ("I am in class Source2"); }} |
Qui, il metodo draw nella classe Source2 sovrascrive il metodo draw definito nella classe Source1.
Differenza tra sovraccarico del metodo e sovrascrittura del metodo
- Nel metodo, i metodi di overloading devono avere una firma diversa. Nel metodo, i metodi di sovrascrittura devono avere la stessa firma.
- Funzione Il sovraccarico è "aggiungere" o "estendere" di più al comportamento del metodo. La funzione di override consiste nel "cambiare" o "ridefinire" completamente il comportamento di un metodo.
- Il sovraccarico del metodo viene utilizzato per ottenere il polimorfismo del tempo di compilazione; L'override del metodo viene utilizzato per ottenere il polimorfismo di runtime.
- Nel metodo / funzione il compilatore di overload sa quale oggetto assegnato a quale classe al momento della compilazione, ma nel metodo che sovrascrive questa informazione non è noto fino al runtime.
- La funzione Overloading si svolge nella stessa classe mentre Override si svolge in una classe derivata da una classe base.