Maison >Java >javaDidacticiel >Explication détaillée d'exemples simples de polymorphisme Java

Explication détaillée d'exemples simples de polymorphisme Java

coldplay.xixi
coldplay.xixioriginal
2020-09-04 09:15:446288parcourir

Un exemple simple de polymorphisme Java : il y a d'abord une classe Animal, qui a deux sous-classes : Cat et Dog ; puis il y a une méthode say dans Animal, lorsque Cat appelle cette méthode, le résultat est "Kitten". Meow meow meow", lorsque Dog appelle cette méthode, le résultat est "puppy bark woof woof".

Explication détaillée d'exemples simples de polymorphisme Java

[Recommandations d'apprentissage associées : Tutoriel de base Java]

Polymorphisme :

多态 fait référence à la même entité ayant plusieurs formes en même temps. Il s'agit d'une fonctionnalité importante de la programmation orientée objet (POO). Si un langage ne prend en charge que les classes mais pas le polymorphisme, cela peut simplement signifier qu'il est basé sur les objets plutôt que orienté objet.

Le polymorphisme se produit entre les objets de deux classes qui ont une relation d'héritage, ce n'est donc pas comme la surcharge de méthode (qui se produit dans une classe) qui se produit lors de la compilation (c'est-à-dire qu'elle est déterminée), mais se produit (détermine ) pendant l'exécution.

Une référence d'un type de classe parent peut pointer vers un objet de l'une de ses sous-classes

[Différents] objets dans le [même] domaine de classe auront des différences [différentes] lors de l'exécution de [ même] méthode Performance

a un exemple plus classique de polymorphisme :

a une classe Animal, qui a deux sous-classes : Chat et Chien. Animal , lorsque Cat appelle cette méthode, la sortie est "chaton miaou miaou", lorsque Dog appelle cette méthode, la sortie est "chiot wouf wouf", c'est l'implémentation du polymorphisme Java.

Ici, nous en écrivons un autre :

—Classe parent : Person.java

import java.util.Scanner;
public class Person {
    public int salary;
    public int allSalary(){
        return 0;
    }
    public static void main(String[] args) {
        Person p = null;
        for (int n = 0; n < 3; n++) {
            @SuppressWarnings("resource")
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个1-3的数字:\n1 is Teacher\n2 is Scientis\n3 is Waiter");
            int i = sc.nextInt();
            //分别指向了不同的子类,输出的结果是不一样的
            if (i == 1) {
                p = new Teacher(5000);
                System.out.println(p.allSalary());
            } else if (i == 2) {
                p = new Scientist(5000);
                System.out.println(p.allSalary());
            } else if (i == 3) {
                p = new Waiter(5000);
                System.out.println(p.allSalary());
            } else {
                System.out.println("?\n请输入1-3");
            }
        }
}
}

—Sous-classe : Scientist.java

 public class Scientist extends Person{
    public Scientist(int salary){
        this.salary = salary;
    }
    public int allSalary(){
        int aa = salary*12+36500;
        System.out.print("五五开一年的工资:");
        return aa;
    }
}

Waiter.java

public class Waiter extends Person{
    public Waiter(int salary){
        this.salary = salary;
    }
    public int allSalary(){
        int aa = salary*12;
        System.out.print("服务员一年的工资:");
        return aa;
    }
}

Teacher .java

public class Teacher extends Person{
    public Teacher(int salary){
        this.salary = salary;
    }
    public int allSalary(){
        int aa = salary*12+3650;
        System.out.print("教师一年的工资:");
        return aa;
    }
}

Si vous souhaitez en savoir plus sur l'apprentissage de la programmation, faites attention à la rubrique formation php !

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