Video: Java Programming Tutorial - 55 - Intoduction to Polymorphism 2025
Polymorfisme er en fancy datavitenskapsterm som refererer til Javas evne til å bruke baseklassevariabler for å referere til underklasseobjekter, holde oversikt over hvilken underklasse en objekt tilhører, og bruk overstyrte metoder for underklassen selv om underklassen ikke er kjent når programmet er kompilert.
og du! Det er en munnfull. Det som koker ned til er at når en parameter krever en bestemt type, kan du bruke et objekt opprettet fra en underklasse av den typen i stedet.
For eksempel, tenk at du utvikler et program som kan spille det ærverdige spillet Tic-Tac-Toe, og du lager en klass som heter Player som representerer en av spillerne. Denne klassen har en offentlig metode som heter flytte som returnerer et int for å angi hvilket torg av brettet spilleren ønsker å markere.
For å holde det enkelt, velger flyttemetoden blindt det første tomme torget på brettet som dets trekk. Det er selvfølgelig en forferdelig strategi for å vinne på Tic-Tac-Toe. Derfor bestemmer du deg for å lage en bedre versjon av klassen, kalt BetterPlayer. Du implementerer BetterPlayer-klassen som en underklasse av spillerklassen, men overstyrer flyttemetoden slik at BetterPlayer-klassen gjør mer intelligente trekk enn spillerklassen.
Anta at du også har skrevet en metode som heter MakeAMove i hovedklassen for Tic-Tac-Toe-applikasjonen (kalt det TicTacToe). MakeAMove-metoden ser slik ut:
Offentlig tomgang MakeAMove (Player p) {int i = p. bevege seg(); returnere i;}
Du kan ringe MakeAMove-metoden slik:
int m = MakeAMove (ny spiller ());
I dette tilfellet returnerer MakeAMove-metoden det første tomme firkanten på brettet.
Men antar at du kaller det slik:
int m = MakeAMove (new BetterPlayer ());
I dette tilfellet vil MakeAMove-metoden returnere et bedre gjennomtenkt trekk fordi BetterPlayer-klassen bruker en bedre algoritme for å bestemme spillerens neste trekk.
