Maison  >  Article  >  Java  >  Quels sont les concepts du polymorphisme Java ?

Quels sont les concepts du polymorphisme Java ?

王林
王林avant
2023-05-19 13:31:271893parcourir

1. Le concept de polymorphisme

En termes simples, différents objets accomplissent le même comportement, mais produisent des états différents

Un exemple très simple : les élèves d'une certaine classe de l'école passent le même examen une fois l'examen terminé. ont des résultats aux tests différents. Certains échouent, certains errent autour de la ligne de réussite et certains ont des scores élevés. Alors, à quel niveau êtes-vous ~ ( ̄▽ ̄) ~

Combien devez-vous atteindre? Les conditions spécifiques sont les suivantes :

1. Elle doit être sous le système d'héritage et une transformation vers le haut a eu lieu

2 La sous-classe doit réécrire la méthode de la classe parent

3 Appelée via la référence de la classe parent Réécriture. méthode

Certains nouveaux concepts impliqués dans ce qui précède seront présentés en détail ci-dessous

2 Transformation vers le haut

2.1 Concept

Nous modifions la classe écrite précédemment :

class Plant {
    String name;
    String source;
    String genu;
    public void func() {
        System.out.println("父类方法");
    }
}
class Tree extends Plant {
 
    public void trait() {
        System.out.println("子类方法");
    }
}

La soi-disant transformation vers le haut consiste à créer une classe enfant. objet, utilisez-le comme classe parent

L'opération spécifique est la suivante :

Plant tree=new Tree();

Parce qu'il est utilisé comme classe parent, l'arbre ne peut pas appeler la méthode de la sous-classe pour le moment

Quels sont les concepts du polymorphisme Java ?

Il y a une transformation vers le bas en Java, mais comme la transformation vers le bas n'est pas sûre, nous l'ignorons

2.2 Formes courantes de transformation vers le haut

L'exemple ci-dessus est le premier : affectation directe

De plus, il existe deux formes

comme paramètres de méthode

Quels sont les concepts du polymorphisme Java ?

Comme valeur de retour de la méthode

Quels sont les concepts du polymorphisme Java ?

3. Cela signifie que la sous-classe réécrit la méthode de la classe parent. Cette méthode ne peut pas être un constructeur, ni être modifiée par private, final ou static. Ce que nous réécrivons, c'est le contenu de la méthode. Le nom de la méthode, la valeur de retour et les paramètres de la méthode ne peuvent pas être modifiés

La classe est toujours modifiée :

class Plant {
    String name;
    String source;
    String genu;
    public void trait() {
        System.out.println("父类方法");
    }
}
class Tree extends Plant {
    @Override  //注解,此注解可以进行一些合法性校验
    public void trait() {
        System.out.println("子类方法");
    }
}

Regardons le résultat de l'appel du trait après la transformation vers le haut :

Quels sont les concepts du polymorphisme Java ?C'est la méthode de la sous-classe qui est appelée, et c'est aussi la caractéristique de la réécriture

En fait, lors de la compilation, c'est bien la méthode de la classe parent qui est appelée, mais la méthode surchargée détermine laquelle méthode à appeler pendant la phase d'exécution (c'est-à-dire la liaison dynamique) C'est aussi la différence essentielle entre la réécriture et la surcharge

3.1 Précautions pour la réécriture

1. Les méthodes statiques, finales, privées modifiées et les méthodes constructeur ne peuvent pas être réécrites

2 . Méthodes de sous-classe Les droits d'accès doivent être supérieurs ou égaux à la classe parent

3 Après JDK7, le type de valeur de retour de la méthode remplacée peut être différent, mais elle doit avoir une relation parent-enfant, qui est un type covariant.

4. N'appelez pas la méthode surchargée dans la méthode constructeur

Le dernier point est expliqué séparément : Supposons que le constructeur de la classe parent appelle la méthode surchargée, car le constructeur de la sous-classe appellera d'abord le constructeur du parent. classe, donc l'objet de la sous-classe est dynamique avant d'être complètement construit. La liaison appelle la méthode réécrite. Dans ce cas, la probabilité de problèmes de programme augmentera considérablement. Après avoir compris la transformation ascendante et la réécriture, vous savez essentiellement comment implémenter le polymorphisme. en Java : combiner la transformation ascendante sous le système d'héritage La transformation et la réécriture atteignent le polymorphisme

.

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