2013-04-28 81 views
1

我有一个名为'Quad'的自定义类,它创建了一个纹理四元组,用作我的2D OpenGL ES 2.0游戏中的一个精灵。无法访问对象子类的变量? (Java/Android)

public class Quad(){ 

//Quad creation stuff here 

} 

然后,我有一个单独的子类(即在不同的文件 - 不是一个内部类)

public class hero extends Quad(){ 

//Variables relating specifically to this character 
int heroX = 0; 
int heroY = 0; 

} 

创建我的对象,像这样:

Quad hero = new Hero(); 

不过,如果我尝试要访问'heroX'和'heroY'变量,我什么也没得到.....

所以我会试试

hero.heroX 

但上面没有选择这个变量。

它会。但是,找到位于我的Quad类中的变量。但我会认为,通过将我的Quad类扩展到我的Hero类中,它们可以通过我的对象获得。

有人可以请解释我的思维错误在哪里以及如何访问这两个变量?由于

回答

1

你的变量heroQuad类型的,不是类型Hero,因此编译器只知道它是一个Quad。如果您想访问Hero方法,请使用特定的子类型。

+0

如果他他使用访问器..我不认为这是问题。也许在其他语言中。如果不是,我的答案是非常错误的。 – 2013-04-28 20:28:43

+0

@LewsTherin - 正确的答案是访问和正确的类型都是必需的。然而,Java默认情况下是私有的(所以同一个包中的任何类都可以读取这些变量),而不是私有的。 – ianhanniballake 2013-04-28 20:42:08

+0

是@ianhanniballake,我刚刚宣布它是英雄,所以现在我说英雄英雄=新英雄();它工作正常 - 做到这一点我可以访问来自Quad类和Hero类的所有方法和变量 - 为什么会这样?当然,如果我将英雄声明为Quad(),那么当我创建对象时,将它创建为一个新的“英雄”(它也是一个Quad) - 编译器当然知道它是一个英雄以及一个四?如果不是的话,那么说'四人英雄=新英雄'(这是我在Java代码中多次看到过的东西)这个问题......困惑! : -/ – Zippy 2013-04-28 20:44:46