Это потому, что в строке array[0] = piece;
вы присваиваете Piece
объект Object
, который действителен, потому что Object
является родительским классом для всех.
Но когда вы делаете array[0].move();
, выпытается вызвать метод move()
из ссылки на класс Object
.Это невозможно, потому что метод move()
не объявлен в классе Object
.
Таким образом, вам необходимо выполнить приведение, как показано ниже:
((Piece)array[0]).move();