Я пишу программу Java для игры в шахматы с множеством разных классов. Так, например, у меня есть Chess_Piece
суперкласса, и от этого у меня много подклассов, как Rook
, King
и т.д.,Как вызвать методы подкласса из объекта суперкласса
У меня есть метод isValidMove()
в каждом подклассе (как каждая часть двигается определенным образом). Есть ли способ позвонить isValidMove()
на объект Chess_Piece
, где компилятор позаботится о том, какой конкретный подкласс isValidMove()
позвонить?
По существу, я беру данные от пользователя, а затем перемещаю Chess_Piece в этом месте. Моя программа не может точно определить, какой подкласс Piece находится в этом месте без сложной системы ifs (то есть if Chess_Piece.toString=="Rook"
, if Chess_Piece.toString=="Bishop"
и т. Д.). Есть идеи?
Это просто звучит как прямое наследование.Определите метод в суперклассе, переопределите его в подклассах. –
, если вы зависите от типа (строка, которую вы описали), вам нужен фабричный класс, который отправляет вызов в определенный подкласс в зависимости от типа. В противном случае, если вы передаете конкретный экземпляр одного из ваших подклассов, Java это выяснит (даже если тип суперкласса, вероятно, рекомендуется сделать суперкласс абстрактным или даже лучше реализовать четко определенный интерфейс) – LeTex