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.
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
}
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
}
}
Player.java
public class Player {
private int win;
public void janken() {
//Traitement Janken
}
public int getWin() {
return win;
}
}
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).
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();
}
}
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