Как симулировать полиморфизм в машинописи? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь смоделировать концепцию ООП в машинописи. Я из происхождения Java. Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь создать настольную игру. У меня есть Celltypes, такие как Hotel, Jail, Treasure и так далее. Все они имеют общий атрибут, называемый количеством типа номера. Поэтому я создал интерфейс CellType и реализовал его для отдельных классов, упомянутых выше (Hotel, Treasure и т. Д.) Есть класс Board, в котором я хочу инициализировать и объявить массив предопределенных типов ячеек. Примерно так:

var cell [: CellType]; // объявление
Отель = новый отель (200);
cell = [Hotel1, Treasure1, Jail1, Hotel2 ..] // инициализация

В Java мы можем сделать:

interface CellType{ public integer amount};
class Hotel implements CellType;
class Jail implements Celltype;
// in main class
ArrayList<CellType> cellTypes = new ArrayList<CellType>;
Hotel Taj = new Hotel();
cellTypes.add(Taj);
Jail jail = new Jail();
cellTypes.add(jail);

Итак, как я могу объявить массив из нескольких дочерних классов, которые наследуют один и тот же суперкласс, как мы это делаем в Java?

1 Ответ

0 голосов
/ 08 января 2019

Интерфейс / классы:

interface CellType { amount: number };

class Hotel implements CellType { 
  // This concise syntax creates the public property
  // and assigns to it the value passed into the
  // constructor
  constructor(public amount: number) { }
}

class Jail implements CellType {
  constructor(public amount: number) { }
}

Использование:

let cellTypes: Array<CellType> = []; // Or let cellTypes: CellType[] = [];

let taj = new Hotel(100);
cellTypes.push(taj);
let jail = new Jail(200);
cellTypes.push(jail);

Вы можете быть более кратким, как это:

let cellTypes: Array<CellType> = [new Hotel(100), new Jail(200)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...