Superclass to subclass (I think)

So I have a lobby where I hold a list of the type Player.
Now when the player decides to play a game it can choose a class such as Heavy, Sniper and Assault.
The classes Heavy, Sniper and Assault are subclasses of the type Player.
So a logical thing would be to do upon pressing the play button “player = new Heavy();”
This however does not give me the attributes I had set in the player object.
For example:
I call the function player.setRoom(someroom);
Then the player chooses the Heavy class.
player = new Heavy();
Now I call player.getRoom().update/render ();
but player.getRoom() is now null.

I don’t want to do this in the Heavy constructor:
Heavy(Player player) {
room = player.getRoom();
}
I’m looking for an OO solution