у меня идея немного другая. у меня есть 2 enum'а — енам типов фигур(т.к. это нерасширяемое множество) и енам цветов(по той же причине)
класс фигура с полями х, у, цвет и тип фигуры
статический вложенный класс Move с методом moveLike(Piece piece); который свчием проверяет тип фигуры и в зависимости от того, какой он, вызывает метод moveLikeKing(piece); etc