La surcharge et la substitution de méthode sont les deux façons dont Java démontre le polymorphisme. Le polymorphisme vient d'une combinaison de deux mots grecs: « poly » signifiant plusieurs et « morph » signifiant forme. Par conséquent, le polymorphisme permet aux méthodes de prendre de nombreuses formes.

Suivez ce guide pour savoir comment surcharger ou remplacer des méthodes en Java.

Qu'est-ce que la surcharge de méthode ?

La « surcharge de méthode » fait référence à la définition de différentes méthodes dans une classe portant le même nom. Les méthodes doivent avoir des signatures différentes. Une signature de méthode est la combinaison d'un nom de méthode et d'une liste de paramètres. Il n'inclut pas le type de retour.

Le compilateur sait quelle méthode utiliser en vérifiant le type, le nombre de paramètres et l'ordre dans lequel ils sont placés.

En rapport: Explorer l'héritage dans le langage de programmation Java

La surcharge de méthode démontre le polymorphisme au moment de la compilation. Le polymorphisme à la compilation signifie que le compilateur Java lie un objet à sa fonctionnalité lors de l'exécution. Le compilateur vérifie les signatures des méthodes pour y parvenir.

Ce type de polymorphisme est également connu sous le nom de liaison statique ou précoce.

Voir l'exemple de surcharge de méthode ci-dessous:

classe Arithmétique{
int cube (int x){
renvoie x*x*x ;
}
double cube (double x){
renvoie x*x*x ;
}
cube flottant (flottant x){
renvoie x*x*x ;
}
public static void main (String[] args){
Arithmétique maMultiplication = new Arithmetic();
System.out.println("Le cube de 5 est " + myMultiplication.cube (5));
System.out.println("Le cube de 5.0 est " + myMultiplication.cube (5.0));
System.out.println("Le cube de 0.5 est " + myMultiplication.cube (0.5));
}
}

Production:

Le cube de 5 est 125
Le cube de 5,0 vaut 125,0
Le cube de 0,5 vaut 0,125

Le code ci-dessus montre comment vous pouvez obtenir un cube de différents types (entier, double, flotter) en utilisant la même méthode.

Généralement, la surcharge de méthode est utilisée pour définir des méthodes similaires avec différents types de paramètres.

Qu'est-ce que la substitution de méthode ?

Cela fait référence à une implémentation différente d'une méthode dans une sous-classe. La méthode doit avoir déjà été définie dans la classe parent.

La méthode de substitution (c'est-à-dire celle de la sous-classe) doit avoir la même signature de méthode que celle de la superclasse. Le type de retour de la méthode de substitution peut être le même ou un sous-type de celui de la superclasse.

La redéfinition est généralement utilisée pour inclure une implémentation spécifique du comportement d'un objet dans la sous-classe.

compte de classe{
message public nul () {
System.out.println("
Merci d'avoir ouvert un compte chez nous !");
}
public static void main (String args[]) {
Compte monCompte = nouveau Compte();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
monCompte.message();
mesEpargne.message();
myFixedDepo.message();
}
}
classe d'épargne étend le compte {
message public nul () {
System.out.println("
Merci d'avoir ouvert un compte d'épargne chez nous !");
}
}
class FixedDeposit étend le compte {
message public nul () {
System.out.println("
Merci d'avoir ouvert un compte à dépôt fixe avec nous !");
}
}

Production:

Merci d'avoir ouvert un compte chez nous !
Merci d'avoir ouvert un compte d'épargne chez nous !
Merci d'avoir ouvert un compte à dépôt fixe avec nous !

L'exemple ci-dessus montre comment la méthode un message() est remplacé dans les sous-classes Des économies et Dépôt fixe. Différents messages s'afficheront pour les titulaires d'un compte bancaire avec un compte d'épargne et ceux avec un compte de dépôt fixe.

En rapport: Ce que vous devez savoir sur l'utilisation de chaînes en Java

Il convient également de noter que la substitution de méthode démontre un polymorphisme d'exécution ou une répartition de méthode dynamique. Cela signifie que la méthode à appeler est résolue à l'exécution plutôt qu'à la compilation.

Pour éviter qu'une méthode ne soit surchargée, utilisez le mot-clé final.

message d'annulation final (){
System.out.println("
Merci d'avoir ouvert un compte chez nous !");
}

Lorsqu'une sous-classe tente de la remplacer, une erreur de compilation se produit.

Idéalement, toutes les méthodes appelées dans un constructeur devraient être final. Ceci afin d'éviter tout changement involontaire pouvant être causé par les sous-classes.

Parfois, vous devrez peut-être accéder à une méthode remplacée dans la méthode de substitution. Vous pouvez utiliser le mot-clé super suivi de l'opérateur point (.) et le nom de la méthode dans ce cas.

Considérez la superclasse Animal.

classe Animal{
mouvement du vide public () {
System.out.println("
Je peux bouger.");
}
}

Ci-dessous se trouve une sous-classe, appelée Poisson, qui remplace bouge toi():

class Poisson étend Animal {
mouvement du vide public () {
System.out.println("
Je peux nager.");
super.move();
}
public static void main (String args[]){
Poisson Tilapia = nouveau poisson();
Tilapia.move();
}
}

Production:

Je peux nager.
Je peux bouger.

Lorsque vous remplacez une méthode, vous devez également être attentif au modificateur d'accès utilisé. Le modificateur de la sous-classe doit avoir le même niveau de visibilité ou un niveau supérieur à celui de la classe de base. Par exemple, si la méthode dans la classe de base est définie comme protégé, alors la méthode de remplacement peut être soit protégé ou alors Publique.

Code simple avec polymorphisme

Le remplacement et la surcharge de méthode sont importants pour la simplification du code, et un code simple est une bonne pratique.

Pourquoi? Imaginez une base de code complexe avec plus de tenants et de aboutissants que Grand Central Station. Imaginez maintenant qu'un insecte dévastateur commence à détruire votre travail acharné sous vos yeux. Vous devez isoler la source de l'infection et vous devez le faire rapidement.

Bon courage, tu n'as pas simplifié ton code... Vous êtes maintenant sur le point d'avoir une vraie leçon de cryptographie. Utiliser des structures de données efficaces et faire ce que vous pouvez pour raccourcir le code (par exemple en gardant DRY à l'esprit) est votre meilleure défense contre une situation comme celle-ci.

La prochaine étape de votre liste d'apprentissage Java devrait être de travailler avec des tableaux. Ce sont des structures de données importantes utilisées pour stocker des lots de points de données.

E-mail
Comment créer et effectuer des opérations sur des tableaux en Java

Apprendre Java? Laissez les baies gérer vos données en toute simplicité.

Lire la suite

Rubriques connexes
  • Programmation
  • Java
  • Tutoriels de codage
A propos de l'auteur
Jérôme Davidson (15 articles publiés)

Jérôme est rédacteur chez MakeUseOf. Il couvre des articles sur la programmation et Linux. Il est également un passionné de crypto et garde toujours un œil sur l'industrie de la crypto.

Plus de Jerome Davidson

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Un pas de plus…!

Veuillez confirmer votre adresse e-mail dans l'e-mail que nous venons de vous envoyer.

.