C# 我能';无法访问main中子类中的公共变量?
有人能帮我吗 我在XNA上做游戏 我有一个GameObject类,它充当C# 我能';无法访问main中子类中的公共变量?,c#,variables,xna,subclass,base-class,C#,Variables,Xna,Subclass,Base Class,有人能帮我吗 我在XNA上做游戏 我有一个GameObject类,它充当Character.class或Object.class 还有Game.class 我只是想问一下,我有一个子类GameObject,它有一个名为canJump的公共变量 由于某些原因,我甚至无法访问该变量 我有游戏对象角色=新角色() 此对象可以轻松访问基类的所有重写函数,但它不允许我使用公共变量。是的,编译器不知道GameObject实际上是一个字符。除非有充分的理由不这样做,否则只需使用字符: Character ch
Character.class
或Object.class
还有Game.class
我只是想问一下,我有一个子类GameObject
,它有一个名为canJump
的公共变量
由于某些原因,我甚至无法访问该变量
我有游戏对象角色=新角色()代码>
此对象可以轻松访问基类的所有重写函数,但它不允许我使用公共变量。是的,编译器不知道GameObject
实际上是一个字符。除非有充分的理由不这样做,否则只需使用字符
:
Character character = new Character();
多态性是这里的关键词。Minitech是正确的,编译器只知道它是一个游戏对象,所以您只能访问GameObjects接口。您可以使用overidden方法,因为它们也是GameObjects界面的一部分,所以在运行时您将实际获得该方法的角色版本。在代码中,您可以执行以下操作:
if(character is Character) //Character being the subclass
{
(character as Character).DoSomeCharacterSpecificStuff;
}
举个例子:(人类扩展了动物)所有的人都是动物,但不是所有的动物都是人。嗯,编译器不知道,嗯?真奇怪。。。它如何知道使用重写的函数?子类中的私有变量?@user819511:它没有。运行时会这样做。至于子类,编译器知道子类是从父类派生的。