A method with return type `Player` returns a reference to a Player. The caller can store that reference and then use it to access the object.
A Game may already hold a Player in its `CurrentPlayer` field:
public Player GetCurrentPlayer()
{
return CurrentPlayer;
}The return value identifies that existing Player. The `return` statement does not create another Player.
A different method might return `new Player();`. That `new` expression creates a Player during the call. The returned reference lets the caller keep accessing it after the method ends.
Both methods have return type `Player`. Only the method's behavior tells whether the caller receives an old or a new object. Repeated calls to the getter may return the same Player; repeated calls that execute `new Player()` create separate Players.