任何人都可以帮助我吗?我无法访问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