无法访问对象子类';什么是变量?(Java/Android)
我有一个名为“Quad”的自定义类,它创建了一个带纹理的Quad,在我的2D OpenGL ES 2.0游戏中用作精灵无法访问对象子类';什么是变量?(Java/Android),java,android,variables,object,subclass,Java,Android,Variables,Object,Subclass,我有一个名为“Quad”的自定义类,它创建了一个带纹理的Quad,在我的2D OpenGL ES 2.0游戏中用作精灵 public class Quad(){ //Quad creation stuff here } 然后我有一个单独的子类(即,在不同的文件中,而不是内部类) 我创建对象的方式如下: Quad hero = new Hero(); 但是,如果我试图访问'heroX'和'heroY'变量,我将一无所获 那我试试看 hero.heroX 但是上面没有提到这个变量 会的。但
public class Quad(){
//Quad creation stuff here
}
然后我有一个单独的子类(即,在不同的文件中,而不是内部类)
我创建对象的方式如下:
Quad hero = new Hero();
但是,如果我试图访问'heroX'和'heroY'变量,我将一无所获
那我试试看
hero.heroX
但是上面没有提到这个变量
会的。但是,请查找位于我的Quad类中的变量。但我会认为,通过将我的四元类扩展到我的英雄类,它们将通过我的对象可用
有人能解释一下我的想法哪里出了问题,以及我如何访问这两个变量吗?谢谢您的变量
hero
的类型是Quad
,而不是hero
,因此编译器只知道它是Quad
。如果要访问Hero
方法,请使用特定的子类型。您的变量Hero
是Quad
类型,而不是Hero
,因此编译器只知道它是Quad
。如果您想访问Hero
方法,请使用特定的子类型。如果他使用访问者。。我认为这不是问题所在。也许用其他语言。如果不是,我的答案就大错特错了。@Lewsterin-正确的答案是访问和正确的类型都是必需的。然而,Java在默认情况下是包私有的(因此同一个包中的任何类都可以读取这些变量),而不是私有的;它工作正常-这样做我可以从Quad类和Hero类访问所有方法和变量-为什么?当然,如果我将hero声明为Quad(),那么当我创建对象时,将其创建为新的“hero”(也是Quad)-编译器肯定知道它是hero,也是Quad?如果不是,那么说“Quad hero=new hero()”有什么意义呢?我在Java代码中多次看到过类似的说法……困惑!!:-/@Zippy-假设你有一个英雄
和一个平民
,都是四元组
的子类,你想要每个人的列表。然后,您可以创建一个Quad
s列表,并将Hero
s和Commoner
s都放在该列表中,然后访问所有公共Quad
变量和方法,而无需知道谁是谁。这就是多态性(不需要知道它们是什么子类才能访问共享行为)。@ianhanniballake如果Quad提供了可以重写的访问器,则类型不是问题。喜欢这个新节目吗?如果他使用访问者。。我认为这不是问题所在。也许用其他语言。如果不是,我的答案就大错特错了。@Lewsterin-正确的答案是访问和正确的类型都是必需的。然而,Java在默认情况下是包私有的(因此同一个包中的任何类都可以读取这些变量),而不是私有的;它工作正常-这样做我可以从Quad类和Hero类访问所有方法和变量-为什么?当然,如果我将hero声明为Quad(),那么当我创建对象时,将其创建为新的“hero”(也是Quad)-编译器肯定知道它是hero,也是Quad?如果不是,那么说“Quad hero=new hero()”有什么意义呢?我在Java代码中多次看到过类似的说法……困惑!!:-/@Zippy-假设你有一个英雄
和一个平民
,都是四元组
的子类,你想要每个人的列表。然后,您可以创建一个Quad
s列表,并将Hero
s和Commoner
s都放在该列表中,然后访问所有公共Quad
变量和方法,而无需知道谁是谁。这就是多态性(不需要知道它们是什么子类才能访问共享行为)。@ianhanniballake如果Quad提供了可以重写的访问器,则类型不是问题。喜欢这个新节目吗?
hero.heroX