Видео: Урок по Java 11: Полиморфизм 2025
Полиморфизм - это фантастический термин компьютерной науки, который ссылается на способность Java использовать переменные базового класса для ссылки на объекты подкласса, отслеживать, к какому подклассу принадлежит объект, и использовать переопределенные методы подкласса, даже если подкласс не известен при компиляции программы.
Уф! Это глоток. Все сводится к тому, что всякий раз, когда параметр вызывает определенный тип, вы можете вместо этого использовать объект, созданный из подкласса этого типа.
Например, предположим, что вы разрабатываете приложение, которое может играть в почтенную игру Tic-Tac-Toe, и вы создаете класс с именем Player, который представляет собой одного из игроков. Этот класс имеет открытый метод с именем move, который возвращает int, чтобы указать, какой квадрат платы, которую игрок хочет отметить.
Чтобы все было просто, метод перемещения слепо выбирает первый пустой квадрат на доске в качестве своего шага. Это, конечно, ужасная стратегия для победы в Tic-Tac-Toe. Поэтому вы решили создать лучшую версию класса, называемую BetterPlayer. Вы реализуете класс BetterPlayer как подкласс класса Player, но переопределяете метод перемещения, чтобы класс BetterPlayer делал более интеллектуальные движения, чем класс Player.
Предположим, что вы также написали метод с именем MakeAMove в основном классе для приложения Tic-Tac-Toe (называемый TicTacToe). Метод MakeAMove выглядит примерно так:
public void MakeAMove (Player p) {int i = p. переехать(); return i;}
Вы можете вызвать метод MakeAMove следующим образом:
int m = MakeAMove (новый Player ());
В этом случае метод MakeAMove вернет первый пустой квадрат на доске.
Но предположим, вы называете это следующим образом:
int m = MakeAMove (новый BetterPlayer ());
В этом случае метод MakeAMove вернет более продуманный ход, потому что класс BetterPlayer использует лучший алгоритм для определения следующего хода игрока.
