Polimorfizm. Klasa Player dziedziczy po GameObject i może być traktowana jako jedna z nich.
Ogólnie: jeśli stworzysz obiekt GameObject przez GameObject player = new Player()
, to metody i pola z Player nie będą widoczne dla instancji tego obiektu. Poniższy kod pokazuje działanie.
class Player : GameObject
{
public void PlayerMethod(){}
}
class GameObject
{
public void GameObjectMethod(){}
}
static void Main(string[] args)
{
Player player = new Player();
player.PlayerMethod();
player.GameObjectMethod();
GameObject playerAsGameObject = new Player();
playerAsGameObject.GameObjectMethod();
playerAsGameObject.PlayerMethod(); //niedostepne, nie skompiluje
((Player)playerAsGameObject).PlayerMethod();//dostepne po rzutowaniu
}
Czyli kiedy zmienna "player" jest referencją do obiektu Player() typu GameObject, to w tym momencie, jeśli nie zrzutuję zmiennej do typu Player, nie mam możliwości korzystania z ŻADNYCH metod, stanów itp itd. które są w klasie Player ?
po prostu jeśli chce się do niej dostać, muszę rzutować tak ?