Maison  >  Article  >  Java  >  Comment comprendre le polymorphisme Java

Comment comprendre le polymorphisme Java

青灯夜游
青灯夜游original
2021-04-13 17:55:396487parcourir

En Java, 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 ; Les avantages du polymorphisme : 1. Éliminer les relations de couplage entre les types ; 2. Remplacement ; 4. Interface ; 6. Simplification ;

Comment comprendre le polymorphisme Java

L'environnement d'exploitation de ce tutoriel : système Windows 7, version Java 8, ordinateur DELL G3.

Présentation du polymorphisme

1. Le Polymorphisme est la troisième caractéristique majeure de l'orientation objet après l'encapsulation et l'héritage.

2. PolymorphismeSignification réalisteCompréhension :

  • Les choses réalistes prennent souvent plusieurs formes, comme les étudiants, les étudiants. sont un type de personne, alors un camarade de classe spécifique Zhang San est à la fois un étudiant et une personne, c'est-à-dire qu'il existe deux formes.                                                                                               🎜>

    En tant que langage orienté objet, Java peut également décrire plusieurs formes d'une chose. Si la classe Student hérite de la classe Person, un objet Student est à la fois un Student et une Person.
  • 3. Le polymorphisme se reflète dans les
  • variables de référence de classe parent qui peuvent pointer vers des objets de sous-classe
.

4. Prérequis : Il doit y avoir une relation enfant-parent.

Remarque : Lors de l'appel d'une méthode utilisant une variable de référence de classe parent polymorphe, la méthode remplacée de la sous-classe sera appelée.

5. Définition et format d'utilisation du polymorphisme

Format de définition :

Compréhension : 父类类型 变量名=new 子类类型();

État multiple 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.

7. Avantages du polymorphisme

Éliminer la relation de couplage entre les types
  • Remplaçabilité
  • Évolutivité
  • Interface
  • Flexibilité
  • Simplification
  • Trois conditions nécessaires à l'existence du polymorphisme

Héritage
  • Réécriture
  • La référence de la classe parent pointe vers l'objet de la sous-classe :
  • Parent p = new Child();

  • Caractéristiques des membres en polymorphisme

1. variables : lors de la compilation et de l'exécution, regardez à gauche
Fu f=new Zi();
System.out.println(f.num);//f是Fu中的值,只能取到父中的值

2. Méthodes membres polymorphes : lors de la compilation et de l'exécution, regardez à gauche et à droite

Fu f1=new Zi();
System.out.println(f1.show());//f1的门面类型是Fu,但实际类型是Zi,所以调用的是重写后的方法。

instanceof mot-clé

Fonction : Utilisé pour déterminer si un objet appartient à un certain type de données.

Remarque : Le type de retour est Booléen

Cas d'utilisation :

        Fu f1=new Zi();
        Fu f2=new Son();
        if(f1 instanceof Zi){
            System.out.println("f1是Zi的类型");
        }
        else{
            System.out.println("f1是Son的类型");
        }

Transformation polymorphe

Polymorphisme La transformation est divisé en deux types : transformation ascendante et transformation descendante

    Transformation ascendante : le polymorphisme lui-même est le processus de transformation ascendante
  • Format d'utilisation : type de classe parent nom de la variable = nouveau type de classe enfant ( );
Scénarios applicables : Lorsqu'il n'est pas nécessaire de faire face à des types de sous-classes, les opérations correspondantes peuvent être réalisées en améliorant l'évolutivité ou en utilisant les fonctions de la classe parent.

Conversion vers le bas : un objet de sous-classe qui a été converti vers le haut peut utiliser le format de conversion de type forcée pour convertir le type de référence de classe parent en type de référence de sous-classe

  • Utilisation format : nom de la variable de type de sous-classe = (type de sous-classe) variable de type de classe parent ;
Scénarios applicables : Lorsque vous souhaitez utiliser les fonctions uniques de la sous-classe.

Cas polymorphe :

Exemple 1 : (

Pour comprendre le polymorphisme, vous pouvez vous concentrer sur ce cas

)

package day0524;

public class demo04 {
    public static void main(String[] args) {
        People p=new Stu();
        p.eat();
        //调用特有的方法
        Stu s=(Stu)p;
        s.study();
        //((Stu) p).study();
    }
}
class People{
    public void eat(){
        System.out.println("吃饭");
    }
}
class Stu extends People{
    @Override
    public void eat(){
        System.out.println("吃水煮肉片");
    }
    public void study(){
        System.out.println("好好学习");
    }
}
class Teachers extends People{
    @Override
    public void eat(){
        System.out.println("吃樱桃");
    }
    public void teach(){
        System.out.println("认真授课");
    }
}
Exemple 2 :

Quel est le résultat de l'exécution du projet ?

package day0524;
public class demo1 {
    public static void main(String[] args) {
        A a=new A();
        a.show();
        B b=new B();
        b.show();
    }
}
class A{
    public void show(){
        show2();
    }
    public void show2(){
        System.out.println("A");
    }
}
class B extends A{
    public void show2(){
        System.out.println("B");
    }
}
class C extends B{
    public void show(){
        super.show();
    }
    public void show2(){
        System.out.println("C");
    }
}

Réponse : A B

Recommandation de didacticiel vidéo connexe :

Tutoriel vidéo Java

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn