2015-10-27 5 views
-2

Мне интересно, как передать любой подкласс в метод. У меня есть плитка. Плитки могут содержать символы, но все символы являются подклассами персонажа. Я хочу установить Tile, чтобы содержать персонажа, поскольку он является обитателем. Это то, что я хотел бы реализовать:Пропустить любой подкласс объекта в качестве параметра

VikingRecruit oden = new VikingRecruit();  
this.gameboard.PlaceItem(0, 0, oden); 

VikingRecruit - это подкласс персонажа. Я бы хотел, чтобы любой тип персонажа мог быть передан.

+0

Вы должны прочитать о полиморфизме. – dguay

+4

Затем введите тип параметра 'Character', хотя это плохой выбор имени класса, так как существует' java.lang.Character'. – Kayaman

ответ

3

Что предложил @dguay. Я бы начал с изучения учебника о полиморфизме в java, возможно this one. Как уже упоминалось, я бы переименовал Character в нечто вроде CharacterPiece или CharacterType, поскольку персонаж уже определен в java.

Тогда ваш placeItem (первая буква должна быть в нижнем регистре) метод подписи будет выглядеть примерно так:

public void placeItem(int a, int b, CharacterPiece piece) { ... } 

И VikingRecruit должен реализовать интерфейс CharacterPiece (или расширить, если вы используете абстракции).

public class VikingRecruit implements CharacterPiece { ... } 

Это сделало бы то, что вы указали выше.