Maison  >  Article  >  Java  >  Comment définir et utiliser la réécriture, la surcharge et le polymorphisme Java

Comment définir et utiliser la réécriture, la surcharge et le polymorphisme Java

王林
王林avant
2023-05-04 17:22:07849parcourir

1. Réécrivez :

a.Définition :

La réécriture est le processus de réécriture de l'implémentation des méthodes de la classe parent auxquelles la sous-classe peut accéder. Ni la valeur de retour ni les paramètres formels ne peuvent être modifiés. Autrement dit, le shell reste inchangé et le noyau est réécrit !

L'avantage de la substitution est que les sous-classes peuvent définir leur propre comportement selon leurs besoins. En d’autres termes, les sous-classes peuvent implémenter les méthodes de la classe parent selon les besoins.

Les méthodes substituées ne peuvent pas générer de nouvelles exceptions vérifiées ou des exceptions plus larges que celles déclarées par la méthode substituée. Exemple :

classe Animal{

public void move(){

System.out.println("Les animaux peuvent bouger");

} }

classe Chien étend Animal{

public void move(){

System.out.println("Les chiens peuvent courir et marcher");

} }

Ensuite nous citons :

Animal a = new Animal(); // Objet animal

Animal b = new Dog(); // Objet Chien

a.move();//Exécuter la méthode de la classe Animal

b.move();//Exécuter la méthode de la classe Dog

Le résultat est :

动物可以移动
狗可以跑和走

Comme vous pouvez le voir dans l'exemple ci-dessus, bien que b appartienne au type Animal, il exécute la méthode move de la classe Dog (la méthode que nous avons remplacée)

En effet, lors de la phase de compilation, seul le type référence du paramètre est vérifié.

Cependant, au moment de l'exécution, la machine virtuelle Java (JVM) spécifie le type de l'objet et exécute les méthodes de l'objet.

Par conséquent, dans l'exemple ci-dessus, la compilation réussit car la méthode move existe dans la classe Animal. Cependant, au moment de l'exécution, la méthode de l'objet spécifique est exécutée.

b. Règles :

1. La liste des paramètres doit être exactement la même que celle de la méthode remplacée.

2. Le type de retour peut être différent du type de retour de la méthode remplacée, mais il doit s'agir d'une classe dérivée de la valeur de retour de la classe parent.

3. L'autorisation d'accès ne peut pas être inférieure à l'autorisation d'accès de la méthode remplacée dans la classe parent.

4. Les méthodes membres de la classe parent ne peuvent être remplacées que par ses sous-classes. Si une sous-classe du même package peut remplacer toutes les méthodes de la classe parent, à l'exception des méthodes déclarées comme privées et finales.

5. Les méthodes déclarées comme finales ne peuvent pas être remplacées, tandis que les méthodes déclarées comme statiques ne peuvent pas être remplacées, mais peuvent être à nouveau déclarées.

6. Si la sous-classe et la classe parent ne se trouvent pas dans le même package, la sous-classe ne peut remplacer que les méthodes non finales de la classe parent qui sont déclarées publiques et protégées.

7. La méthode substituée peut lever n'importe quelle exception non obligatoire, que la méthode substituée lève ou non une exception. Toutefois, une méthode substituée ne peut pas lever de nouvelles exceptions obligatoires ou des exceptions obligatoires plus larges que celles déclarées par la méthode substituée, et vice versa.

2. Recharger :

Cela a la même signification que C++.

La surcharge est une méthode portant le même nom mais des paramètres différents dans une classe. Les types de retour peuvent être identiques ou différents.

Chaque méthode (ou constructeur) surchargée doit avoir une liste unique de types de paramètres.

L'endroit le plus couramment utilisé est la surcharge du constructeur.

La différence avec la substitution est que la surcharge se concentre sur différents paramètres.

3. Polymorphisme :

a.Définition :

Le polymorphisme est la capacité d'un même comportement à avoir plusieurs manifestations ou formes différentes. Le polymorphisme est la même interface, utilisant différentes instances pour effectuer différentes opérations.

Apprendre le concept de polymorphisme est très important pour bien appliquer les interfaces.

Trois conditions nécessaires à l'existence du polymorphisme :

1.Hériter

2. Réécrire

3. La référence de la classe parent pointe vers l'objet de la sous-classe

Par exemple, dans cet exemple, une référence d'une classe parent pointe vers un objet d'une sous-classe :

Parent p = nouvel enfant ();

Remarque : lors de l'appel d'une méthode à l'aide du polymorphisme, vérifiez d'abord si la méthode existe dans la classe parent. Sinon, une erreur de compilation se produira si c'est le cas, appelez la méthode du même nom dans la sous-classe.

b. Fonction virtuelle :

Les fonctions virtuelles sont l'un des fondements du polymorphisme. Bien entendu, toutes les fonctions de JAVA sont des fonctions virtuelles au sens C++ par défaut, vous n'avez donc pas besoin d'y prêter une attention particulière, car la liaison dynamique est le comportement par défaut de Java.

Si vous ne souhaitez pas qu'une fonction ait des caractéristiques de fonction virtuelle en Java, vous pouvez ajouter le mot-clé final pour en faire une fonction non virtuelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer