Différence entre surcharge et surcharge

Avant de plonger profondément dans les différences entre surcharge et surcharge, devons-nous comprendre ce qu'ils sont réellement et les scénarios dans lesquels ils sont particulièrement utilisés? Les débutants en Java se confondent souvent entre les deux, mais ils sont totalement différents l'un de l'autre et utilisés dans leurs scénarios spécifiques. La surcharge de méthode se produit lorsque nous avons plusieurs méthodes portant le même nom mais des signatures différentes. Les signatures incluent le nombre de paramètres de méthode, le type de données des paramètres. Le type de méthode de retour n'est pas inclus dans la signature. Ceci est fait pour fournir la fonctionnalité de réutiliser le même nom de méthode et d'augmenter la lisibilité des programmes. La substitution de méthode se produit dans le cas de l'héritage dans lequel la classe dérivée hérite des propriétés de la classe de base. Cela implique de définir la même méthode de classe de base dans une classe dérivée avec le même paramètre et le même type de retour afin de définir toute fonctionnalité / implémentation spécifique de cette méthode dans la classe dérivée.

Considérons un scénario dans lequel un programmeur doit trouver l'aire d'une figure géométrique. L'aire de chaque figure varie les unes des autres. Par exemple, pour trouver l'aire du carré, un seul paramètre "côté" est requis, pour le rectangle deux paramètres "longueur et largeur" ​​sont requis tandis que pour le cercle "rayon est requis, qui peut être décimal. Pour résoudre ce problème, une surcharge de méthode est effectuée dans laquelle la zone de méthode a différents paramètres et types de données pour une zone de différentes figures. Pensez à la situation du système bancaire, bien que plusieurs méthodes et procédures pour tous les employés soient les mêmes, à l'exception de certains taux d'intérêt similaires pour les citoyens normaux et seniors. Dans ce cas, la méthode prioritaire est utilisée avec différentes implémentations des taux d'intérêt de la méthode dans la classe des citoyens normaux et seniors héritant de la classe de base «Taux bancaires».

Comparaison directe entre surcharge et surcharge (infographie)

Ci-dessous est la comparaison des 7 meilleurs entre surcharge et surcharge :

Différences clés entre surcharge et surcharge

Laissez-nous discuter de certaines des principales différences entre la surcharge et la surcharge:

  1. Dans la surcharge de méthode, les méthodes peuvent avoir des spécificateurs / modificateurs d'accès identiques ou différents dans le nom de la méthode tandis que dans la méthode Overriding, la méthode du cas de base (méthode substituée) doit avoir un spécificateur d'accès restreint que la méthode d'une classe parent. Par exemple, si la méthode d'une classe de base est protégée, la méthode enfant private n'est pas autorisée.
  2. Lorsqu'elle est comparée en termes de performances, la surcharge présente de meilleures performances par rapport à la substitution, car la surcharge de méthode est effectuée au moment de la compilation.
  3. Le type de retour d'une méthode ne fait jamais partie de la surcharge de méthode. Par conséquent, peu importe si différentes méthodes surchargées ont le même type de retour ou un type de retour différent, alors que dans la méthode prioritaire, le type de retour des méthodes parent et classe de base doit être exactement le même. .
  4. Lorsque l'on parle de liaison, la surcharge a une liaison statique tandis que la substitution a une liaison dynamique.
  5. L'exception levée par la méthode n'a pas d'importance dans la méthode surchargée si une méthode lève une exception, d'autres méthodes surchargées peuvent / ne peuvent pas lever la même exception ou une exception différente mais en cas de surcharge, la méthode prioritaire (méthode dans la classe dérivée) ne peut pas lever l'exception d'une hiérarchie supérieure à la méthode redéfinie (méthode dans la classe de base).
  6. Tous les spécificateurs comme private, final et static ne peuvent pas être utilisés dans la substitution de méthode alors que tous les spécificateurs d'accès sont autorisés dans la surcharge de méthode.

Tableau de comparaison de la surcharge par rapport à la surcharge

Le tableau ci-dessous résume les comparaisons entre surcharge et surcharge:

S.No. Surcharge Primordial
1La surcharge de méthode est effectuée pour avoir une définition améliorée des méthodes en fonction de diverses situations.La substitution de méthode est effectuée afin de fournir une implémentation spécifique des méthodes définies dans la classe parente.
2La surcharge de méthode se fait dans une seule classe dans laquelle une classe ayant différentes définitions d'une méthode.La substitution de méthode est effectuée entre deux classes ayant une relation IS-A (héritage) entre elles.
3La surcharge de méthode est effectuée au moment de la compilation et est donc connue sous le nom de polymorphisme au moment de la compilation.La substitution de méthode est effectuée lors de l'exécution et, par conséquent, elle est connue sous le nom de polymorphisme d'exécution.
4L'ordre des paramètres, le type de données et le nombre de paramètres doivent être différents pour la surcharge de méthode.L'ordre des paramètres, le type de données et le nombre doivent être identiques pour la substitution de méthode.
5Le type de retour d'une méthode peut être identique ou différent en cas de surcharge de méthode. Cela n'a pas d'importance du tout.Le type de retour d'une méthode doit être le même dans les classes parent et enfant en cas de substitution de méthode.
6Les méthodes statiques peuvent être surchargées, c'est-à-dire que nous pouvons avoir différentes méthodes statiques surchargées dans la même classe.Les méthodes statiques ne peuvent jamais être remplacées, c'est-à-dire que la méthode statique dans une classe parente et la classe de base n'a aucune relation entre elles.
septLes méthodes privées et finales peuvent être surchargées dans une classe, c'est-à-dire qu'une classe peut avoir surchargé plus d'une méthode privée et finale.Les méthodes privées et finales ne peuvent jamais être remplacées dans une classe enfant.

Exemple de surcharge de méthode:

class FIgures(
public int area(int side)
(
return side*side;
)
public int area(int length, int breadth) //method overloading
(
return length*breadth;
)
public static void main(String() args)
(
Figures f = new Figures ();
System.out.println(“Area of Square “+ f.area(10));
System.out.println(“Area of Rectangle “+ f.area(12, 10));
)
)

Production:

Superficie du carré 100
Aire du rectangle 120

Dans l'exemple ci-dessus, la méthode 'area ()' est surchargée et a des paramètres différents dans les deux méthodes surchargées. Comme la zone doit trouver à la fois pour le carré et le rectangle mais avec des paramètres différents.

Exemple de substitution de méthode:

class BankRates( // parent(base) class
void rates()
(
System.out.println(“Rates for normal citizen is 3.5%”);
)
)
class SeniorCItizen extends BankRates( //child class inheriting parent class
void rates() // method overriding
(
System.out.println(“Rates for senior citizens is 4.5%”);
)
)
class Bank(
public static void main(String() args)
(
SeniorCItizen sc = new BankRates(); sc.rates();
)
)

Production:

Les tarifs pour les seniors sont de 4, 5%

Dans l'exemple ci-dessus, la méthode 'rates ()' est remplacée dans la classe dérivée 'SeniorCitizen' car nous voulons également les taux de méthode dans la classe SeniorCitizen mais avec une implémentation différente.

Conclusion

L'explication ci-dessus montre clairement la différence entre la surcharge et la substitution et les scénarios spécifiques où ces deux sont utilisés. Avant de programmer, il faut comprendre ces concepts de base de Java car ils constituent la base de nombreuses choses et aident à comprendre facilement des concepts plus avancés.

Articles recommandés

Cela a été un guide pour la différence entre Overloading et Overriding. Ici, nous discutons également des différences clés entre surcharge et surcharge avec des infographies et un tableau de comparaison. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Programmation fonctionnelle vs OOP
  2. Qu'est-ce qui est prioritaire en JavaScript?
  3. Comment fonctionne la surcharge en PHP?
  4. Présentation de la surcharge en C #
  5. Surcharge en Java
  6. Surcharge Python
  7. Surcharge et remplacement en C #