2012-04-03 1 views
0

Может ли кто-нибудь мне помочь?Я не могу получить доступ к общедоступной переменной внутри подкласса в главном?

Я делаю игру на XNA.

У меня есть класс геймобжекты, который выступает в качестве базового класса для Character.class или Object.class

Там также Game.class

Я просто хотел спросить, у меня есть подкласс GameObject, который имеет публичную переменную canJump.

По какой-то причине я даже не могу получить доступ к переменной.

У меня есть GameObject character = new Character();

Этот объект может легко получить доступ ко всем перегруженные функции базового класса, но это не позволит мне использовать общие переменные.

+0

думает пример: (Human Animal распространяется) Все Люди для животных, но не все животные человеческих – mshsayem

ответ

1

Ну, да, компилятор не знает, что GameObject на самом деле Character. Если у вас есть хорошая причина, чтобы не просто использовать Character:

Character character = new Character(); 
+0

Хмммы компилятор не знает, а? Это странно ... как узнать, как использовать переопределенные функции? И частные переменные в подклассе? – user819511

+2

@ user819511: Это не так. Среда выполнения. Что касается подкласса, то компилятор знает, что подкласс является производным от родителя. – Ryan

+0

Ну ладно ... Gotchya. Я посмотрю, что я могу с этим поделать. – user819511

1

Полиморфизм является ключевым словом здесь. Minitech прав, все компилятор знает, что это GameObject, поэтому у вас есть доступ к интерфейсу GameObjects. Вы можете использовать переопределенные методы, потому что они также являются частью интерфейса GameObjects, поэтому во время выполнения вы фактически получите версию этого метода. В своем коде вы можете делать такие вещи, как:

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