То, что вы пытаетесь сделать, к счастью, невозможно (представьте, что ваши объекты начали менять классы в середине вашего кода).Вы можете создать объект подкласса на основе объекта суперкласса (если вы можете разумно заполнить любые пропущенные свойства), но вы не можете превратить существующий объект в его подкласс (так, чтобы ссылочное равенство работало каквы надеетесь в своем примере кода, то есть преобразование myObject
повлияет на все списки).
Я не знаю, как вы пришли к этой идее, но где-то по пути вы пошли внизнеправильный путь.Если вы сообщите нам, чего вы пытаетесь достичь, мы сможем предложить вам лучшее решение.
Редактировать: Поскольку вы выполняете шашки и вам нужно собрать часть, у вас есть простой выбор добавленияboolean crowned
свойство на куски и написание логики на его основе.
В более сложной ситуации вы можете, например, использовать шаблон стратегии , где у вас будет класс Piece
и они будут иметь свойство Type
, которое указывает фактический тип куска.Таким образом, объект, который вы помещаете в списки (Piece
), всегда остается одним и тем же, но если вы замените его свойство Type
, может показаться, что кусок волшебным образом меняет свой тип!