Maison  >  Article  >  Java  >  Bases de Java : compréhension et application du polymorphisme

Bases de Java : compréhension et application du polymorphisme

(*-*)浩
(*-*)浩avant
2019-08-13 16:52:252738parcourir

Bases de Java : compréhension et application du polymorphisme

Aperçu du polymorphisme

1. Le polymorphisme est la troisième méthode majeure orientée objet après l'encapsulation et l'héritage. .

2. Comprendre le sens de la réalité polymorphe :

Les choses réelles prennent souvent plusieurs formes, comme les étudiants, et les étudiants sont un type d'être humain. Un camarade de classe spécifique, Zhang San, est à la fois un étudiant et un être humain, c'est-à-dire qu'il apparaît sous 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 le fait que les variables de référence de classe parent 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 : nom de la variable de type de classe parent = nouveau type de sous-classe (🎜>

)

Caractéristiques des membres en polymorphisme

1. Variables de membres polymorphes : regardez à gauche lors de la compilation et de l'exécution

Fu f=new Zi();

System.out.println(f.num);//f est la valeur dans Fu, et ne peut obtenir la valeur que dans le parent

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


Fu f1=new Zi();

System.out.println(f1.show());//Le type de façade de f1 est Fu, mais le type réel est Zi, donc la méthode remplacée est appelée.


instanceof password

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

Transformation polymorphe Il existe deux types de transformation vers le haut et transformation vers le bas

Transformation vers le haut : le polymorphisme lui-même est un processus de transformation vers le haut

Utilisation du format : nom de la variable de type de classe parent = nouveau type de sous-classe (

Applicable); Scénarios : 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é pour convertir le type de référence de classe parent en type de référence de sous-classe

Utilisation du format : type de sous-classe Nom de la variable = (type de sous-classe) Variable du type de classe parent ;

Scénario applicable : Lorsque vous souhaitez utiliser les fonctions uniques de la sous-classe.

Cas polymorphe :

Exemple 1 :

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");
    }
}

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