[JAVA] Polymorphisme que même les débutants en orientation objet peuvent comprendre

Qu'est-ce que le polymorphisme?

Il a été écrit sur Wikipédia comme suit.

Le polymorphisme décrit la nature du système de types d'un langage de programmation, et que chaque élément du langage de programmation (constantes, variables, expressions, objets, fonctions, méthodes, etc.) appartient à plusieurs types. Fait référence à la propriété de pardonner. Aussi appelé polymorphisme, polymorphisme, polymorphisme, diversité.

Il est difficile de dire que chaque élément du langage de programmation appartient à plusieurs types.

En bref, le polymorphisme est une routine principale courante.

Qu'est-ce qu'une routine principale commune?

image.png

Pourquoi utiliser le polymorphisme

Mise en œuvre du polymorphisme


Door dr = new Door();     // OK:Les types sur les côtés gauche et droit correspondent (Remarque: la porte est une classe faite maison)
Door dr2 = new String();  // NG:Erreur de compilation car les types sur les côtés gauche et droit ne correspondent pas
ClassA a = new ClassB();     // OK
//La classe A est une super classe, la classe B est une sous-classe
public class ClassB extends ClassA {
    //réduction
}

Exemples spécifiques de polymorphisme

1. Arrangement utilisant le polymorphisme

Appelant (classe avec méthode principale)

La variable players est déclarée comme un "tableau de classes Player". Le contenu du tableau se voit attribuer une instance d'une autre classe (une sous-classe de la classe Player).

C'est le polymorphisme (routine principale commune). Il y a une façon d'appeler "players [X] .janken ()", mais il y a plusieurs méthodes à appeler (Person's Janken, Robot's Janken).

MainClass.java


public class MainClass {

    public static void main(String[] args) {

        // (1)Générer un joueur pour jouer
        Player[] players = new Player[3];
        players[0] = new Person();  //Homme
        players[1] = new Robot();   //Robot A
        players[2] = new Robot();   //Robot B

        // (2)Laissez chaque joueur jouer à son tour
        players[0].janken();    //Homme
        players[1].janken();    //Robot A
        players[2].janken();    //Robot B
    }
}

Appelé (super classe)

Player.java


public class Player {

    private int win;

    public void janken() {
        //Traitement Janken
    }

    public int getWin() {
        return win;
    }
}

Appelé (sous-classe)

Person.java


public class Person extends Player {
    //réduction
}

Robot.java


public class Robot extends Player {
    //réduction
}

À l'avenir, même si le traitement de la méthode janken change, l'appelant n'a pas à changer ni (1) ni (2). De plus, même si le programme est modifié comme indiqué ci-dessous, le code de l'appelant n'a besoin d'être modifié que dans (1).

2. Exemple d'utilisation du polymorphisme comme argument

Supposons que les spécifications du programme Janken ont changé. J'ai ajouté le code de "[Add]" à MainClass.java plus tôt.

MainClass.java


public class MainClass {

    public static void main(String[] args) {

        // (1)Générer un joueur pour jouer
        Player[] players = new Player[3];
        players[0] = new Person();  //Homme
        players[1] = new Robot();   //Robot A
        players[2] = new Robot();   //Robot B

        //[Ajout] Ajout du processus d'inscription au tournoi Janken
        Entry[] entry = new Entry[3];
        entry[0] = new Entry(players[0]);   //Homme
        entry[1] = new Entry(players[1]);   //Robot A
        entry[2] = new Entry(players[2]);   //Robot B

        // (2)Laissez chaque joueur jouer à son tour
        players[0].janken();    //Homme
        players[1].janken();    //Robot A
        players[2].janken();    //Robot B
    }
}

Entry.java


public class Entry {

    private int win;

    //constructeur
    public Entry(Player player) {
        //Obtenez des informations sur les joueurs (historique des victoires, etc.) pour vous inscrire au tournoi Janken
        win = player.getWin();
    }
}

Sommaire

Qu'est-ce que le polymorphisme?

Pourquoi utiliser le polymorphisme?

Références

Si vous souhaitez en savoir plus sur l'orientation des objets, je vous recommande de le lire. Vous pouvez l'acheter sur Amazon.

Recommended Posts

Polymorphisme que même les débutants en orientation objet peuvent comprendre
"Héritage" que même les débutants en orientation objet peuvent comprendre
Les bases de jQuery que même les freeters peuvent comprendre
Expliquer «orienté objet» que même les élèves du primaire peuvent comprendre au niveau 5
Implicite de Scala que même les boutiques Java peuvent comprendre
[JQuery] Un gars que même les débutants pourraient bien comprendre
Construction d'un environnement Android que même les singes peuvent comprendre [React Native]
Résumé de la programmation orientée objet utilisant Java
Construction d'environnement de développement JSP + Eclipse + Jetty que même les débutants en Java peuvent faire
J'ai essayé d'apprendre Java avec une série que les débutants peuvent comprendre clairement
Jusqu'à ce que les débutants en programmation puissent utiliser des expressions lambda
Orienté objet qui peut être compris par les fées
Programmation orientée objet
Prise de conscience de l'orientation objet pendant six mois de programmation
[Critique de livre] Test unitaire sur le site de programmation qui peut être réalisé sans aucune expérience
Comprenez en lisant l'article! Résumé des contenus que les débutants d'Elasticsearch souhaitent supprimer