2012-04-03 102 views
0

任何人都可以幫助我嗎?我無法訪問main中的子類中的公共變量?

我在XNA上做遊戲。

我有充當Character.classObject.class

一個基類,還有Game.class

我只想問一個遊戲物體類,我有GameObject子類,有一個名爲canJump公共變量。

出於某種原因,我甚至無法訪問該變量。

GameObject character = new Character();

這個對象可以方便地訪問的基類的全部重寫的功能,但它不會允許我使用公共變量。

+0

想到一個例子:(人伸出動物)所有的人都是動物,但並非所有的動物都是人類 – mshsayem 2012-04-03 02:12:09

回答

1

好的,編譯器不知道GameObject實際上是Character。除非你有充分的理由不要,只需使用Character

Character character = new Character(); 
+0

嗯編譯器不知道吧?這很奇怪......它如何知道使用重寫函數?和子類中的私有變量? – user819511 2012-04-03 02:13:28

+2

@ user819511:沒有。運行時確實。至於子類,編譯器確實知道子類是從父類派生的。 – Ryan 2012-04-03 02:13:59

+0

噢好吧... Gotchya。我會看看我能做些什麼。 – user819511 2012-04-03 02:16:59

1

多態性是這裏的關鍵字。 Minitech是正確的,所有編譯器知道它是一個GameObject,所以你只能訪問GameObjects接口。您可以使用超級方法,因爲它們也是GameObjects接口的一部分,在運行時您將實際獲得Character方法的版本。在代碼中,你可以做這樣的事情:

if(character is Character) //Character being the subclass 
{ 
    (character as Character).DoSomeCharacterSpecificStuff; 
}