La surcharge de méthodes, également appelée polymorphisme de surcharge de fonctions ou de compilation, est un concept consistant à avoir deux méthodes ou plus portant le même nom mais une signature différente dans le même périmètre. De nombreux langages de programmation prennent en charge cette fonctionnalité: Ada, C ++, C #, D et Java.
Exemple de surcharge de méthode en C #
class OverloadShapes {float Polygon (int radius, float pi) {float circleArea = pi * rayon * rayon; } int Polygone (int longueur, int largeur) {int rectangleArea = longueur * largeur; } int Polygone (côté int) {int squareArea = side * side; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class OverloadShapes {float Polygon (int radius, float pi) {float circleArea = pi * rayon * rayon; } int Polygone (int longueur, int largeur) {int rectangleArea = longueur * largeur; } int Polygone (côté int) {int squareArea = side * side; }} |
Comme indiqué dans l'exemple ci-dessus, la méthode 'Polygon' est surchargée 3 fois avec une signature de méthode différente, c'est-à-dire que le type ou le nombre de paramètres est différent.
Méthode prioritaire
Le remplacement de méthode, également appelé remplacement de fonction ou polymorphisme d'exécution, est une fonction de programmation orientée objet qui permet à une classe enfant de fournir sa propre implémentation à la méthode définie dans la classe parent. L'implémentation dans la classe enfant substitue la définition de la méthode dans la classe de base, à condition que la méthode dans la classe enfant ait le même nom, la même signature et le même type de retour.
Exemple de neutralisation de méthode en C #
class Source1 {public void draw () {Console.Writeline ("Je suis dans la classe Source1"); }} class Source2 étend Source1 {public void draw () {Console.Writeline ("Je suis dans la classe Source2"); }}1 2 3 4 5 6 7 8 9 10 | class Source1 {public void draw () {Console. Writeline ("Je suis dans la classe Source1"); }} class Source2 étend Source1 {public void draw () {Console. Writeline ("Je suis dans la classe Source2"); }} |
Ici, la méthode draw de la classe Source2 remplace la méthode draw définie dans la classe Source1.
Différence entre la méthode surchargée et la méthode surchargée
- Dans Méthode, les méthodes de surcharge doivent avoir une signature différente. Dans méthode, les méthodes de substitution doivent avoir la même signature.
- La surcharge de fonction consiste à «ajouter» ou «étendre» davantage le comportement de la méthode. Le remplacement de fonction consiste à «changer» ou à «redéfinir» complètement le comportement d'une méthode.
- La surcharge de méthode est utilisée pour obtenir un polymorphisme au moment de la compilation; la méthode prioritaire est utilisée pour obtenir un polymorphisme au moment de l'exécution.
- Dans la méthode / fonction, le compilateur sait quel objet est affecté à quelle classe au moment de la compilation, mais dans la méthode, cette information n’est pas connue au moment de l’exécution.
- La surcharge de fonctions a lieu dans la même classe alors que la substitution a lieu dans une classe dérivée d'une classe de base.