任何人都可以幫助我嗎?我無法訪問main中的子類中的公共變量?
我在XNA上做遊戲。
我有充當Character.class
或Object.class
一個基類,還有Game.class
我只想問一個遊戲物體類,我有GameObject
子類,有一個名爲canJump
公共變量。
出於某種原因,我甚至無法訪問該變量。
我GameObject character = new Character();
這個對象可以方便地訪問的基類的全部重寫的功能,但它不會允許我使用公共變量。
任何人都可以幫助我嗎?我無法訪問main中的子類中的公共變量?
我在XNA上做遊戲。
我有充當Character.class
或Object.class
一個基類,還有Game.class
我只想問一個遊戲物體類,我有GameObject
子類,有一個名爲canJump
公共變量。
出於某種原因,我甚至無法訪問該變量。
我GameObject character = new Character();
這個對象可以方便地訪問的基類的全部重寫的功能,但它不會允許我使用公共變量。
好的,編譯器不知道GameObject
實際上是Character
。除非你有充分的理由不要,只需使用Character
:
Character character = new Character();
嗯編譯器不知道吧?這很奇怪......它如何知道使用重寫函數?和子類中的私有變量? – user819511 2012-04-03 02:13:28
@ user819511:沒有。運行時確實。至於子類,編譯器確實知道子類是從父類派生的。 – Ryan 2012-04-03 02:13:59
噢好吧... Gotchya。我會看看我能做些什麼。 – user819511 2012-04-03 02:16:59
多態性是這裏的關鍵字。 Minitech是正確的,所有編譯器知道它是一個GameObject,所以你只能訪問GameObjects接口。您可以使用超級方法,因爲它們也是GameObjects接口的一部分,在運行時您將實際獲得Character方法的版本。在代碼中,你可以做這樣的事情:
if(character is Character) //Character being the subclass
{
(character as Character).DoSomeCharacterSpecificStuff;
}
想到一個例子:(人伸出動物)所有的人都是動物,但並非所有的動物都是人類 – mshsayem 2012-04-03 02:12:09