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

Bases de Java : compréhension et application du polymorphisme

(*-*)浩
Libérer: 2019-08-13 16:52:25
avant
2792 Les gens l'ont consulté

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的类型");
}
Copier après la connexion

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("认真授课");
    }
}
Copier après la connexion
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");
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal