Video: Java Programming Tutorial - 55 - Intoduction to Polymorphism 2025
Polymorfisme er et fancy computer science-udtryk, der refererer til Java's evne til at bruge basisklassevariabler til at henvise til underklasseobjekter, holde styr på, hvilken underklasse en objekt tilhører, og brug overstyrede metoder til underklassen, selv om underklassen ikke er kendt, når programmet er kompileret.
Puha! Det er en mundfuld. Hvad det koger på er, at når en parameter kræver en bestemt type, kan du bruge et objekt, der er oprettet fra en underklasse af den pågældende type i stedet.
For eksempel, hvis du udvikler et program, der kan spille det ærværdige spil Tic-Tac-Toe, og du opretter en klasse med navnet Player, der repræsenterer en af spillerne. Denne klasse har en offentlig metode med navnet flytte, der returnerer et int for at angive hvilket firkant af brættet spilleren ønsker at markere.
For at holde tingene enkle vælger bevægelsesmetoden blindt det første tomme firkant på brættet som dets bevægelse. Det er selvfølgelig en frygtelig strategi for at vinde på Tic-Tac-Toe. Derfor beslutter du at oprette en bedre version af klassen, kaldet BetterPlayer. Du implementerer BetterPlayer-klassen som en underklasse af Player-klassen, men tilsidesætter bevægelsesmetoden, så BetterPlayer-klassen gør mere intelligente bevægelser end Player-klassen.
Antag at du også har skrevet en metode, der hedder MakeAMove i hovedklassen for Tic-Tac-Toe ansøgningen (kaldet TicTacToe). MakeAMove-metoden ser sådan ud:
Offentlig tomgang MakeAMove (Player p) {int i = p. bevæge sig(); returnere i;}
Du kan kalde MakeAMove-metoden som denne:
int m = MakeAMove (ny spiller ());
I dette tilfælde returnerer MakeAMove-metoden det første tomme firkant på tavlen.
Men formoder, at du kalder det sådan:
int m = MakeAMove (new BetterPlayer ());
I dette tilfælde returnerer MakeAMove-metoden et bedre gennemtænkt træk, fordi BetterPlayer-klassen bruger en bedre algoritme til at bestemme spillerens næste træk.