2012-04-03 74 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; 
}