Video: Was ist Polymorphie in Java? 2024
Polymorphism ist ein ausgefallener Begriff aus der Informatik, der sich auf die Fähigkeit von Java bezieht, Basisklassenvariablen zu verwenden, um auf Unterklassenobjekte zu verweisen, zu verfolgen, zu welcher Unterklasse ein Objekt gehört. und verwenden überschriebene Methoden der Unterklasse, obwohl die Unterklasse nicht bekannt ist, wenn das Programm kompiliert wird.
Puh! Das ist ein Schluck. Es läuft darauf hinaus, dass immer dann, wenn ein Parameter einen bestimmten Typ aufruft, ein Objekt verwendet werden kann, das stattdessen aus einer Unterklasse dieses Typs erstellt wurde.
Angenommen, Sie entwickeln eine Anwendung, die das ehrwürdige Spiel Tic-Tac-Toe spielen kann, und Sie erstellen eine Klasse namens Player, die einen der Spieler repräsentiert. Diese Klasse hat eine öffentliche Methode namens move, die ein int zurückgibt, um anzugeben, welches Quadrat des Boards der Spieler markieren möchte.
Um die Dinge einfach zu halten, wählt die Move-Methode blind das erste leere Quadrat auf dem Brett als seine Bewegung. Das ist natürlich eine schreckliche Strategie, um bei Tic-Tac-Toe zu gewinnen. Aus diesem Grund entscheiden Sie sich für eine bessere Version der Klasse namens BetterPlayer. Sie implementieren die BetterPlayer-Klasse als Unterklasse der Player-Klasse, überschreiben jedoch die Verschiebungsmethode, sodass die BetterPlayer-Klasse intelligentere Züge als die Player-Klasse durchführt.
Angenommen, Sie haben auch eine Methode namens MakeAMove in der Hauptklasse für die Tic-Tac-Toe-Anwendung (genannt TicTacToe) geschrieben. Die MakeAMove-Methode sieht ungefähr so aus:
public void MakeAMove (Player p) {int i = p. Bewegung(); return i;}
Sie können die MakeAMove-Methode wie folgt aufrufen:
int m = MakeAMove (neuer Player ());
In diesem Fall gibt die MakeAMove-Methode das erste leere Quadrat auf der Platine zurück.
Aber nehmen wir an, Sie nennen es so:
int m = MakeAMove (new BetterPlayer ());
In diesem Fall gibt die MakeAMove-Methode eine bessere durchdachte Bewegung zurück, da die BetterPlayer-Klasse einen besseren Algorithmus verwendet, um den nächsten Zug des Spielers zu bestimmen.