2014-02-18 54 views
0

我有一个类全局声明数组,并且这些数组通过这个类中的方法初始化。它们不在构造函数内。我有另外一门课,我使用extends来允许我访问这些值。当然,我收到一个空指针异常。我将如何去解决这个问题?我不需要重写这些数组。 JUst需要在方法内部使用它们来填充其他数组。如何从子类中的父类访问数组?

我已经在这一段时间了。我对java的使用经验还很少。 任何建议,将不胜感激。谢谢大家

什么我谈论的例子:

public class Parent{ 
    public double hey[ ]; 

    public double [] fillHey(){ 

    hey = new double[57] 

    for(int k = 0; k<57; k++) 
    { 
     hey[k] = k+2; 
    } 
    } 
} 

的子类:

public class Child extends Parent{ 

public double you[ ]; 

public double[ ] fillYou(){ 

you = new double[57]; 

for(int k = 0; k<57; k++) 
    { 
     you[k] = (k+2) * hey[k]; 
    } 
    } 
} 
+0

你忘了用语言标记问题。 – ford

+0

啊看起来像@Damien已经涵盖了谢谢你的提高 – handroski

回答

2

你没有实例hey数组中任一类的构造函数,因此它仍然是在子类中使用它时为null。

您可以

  • 初始化它在构造函数中

  • 或(它使用前)初始化它里面的子类fillYou()方法。

+0

因此,如果我从父类中提出相同的名称,编译器会认识到这一点? – handroski

+1

是的,它会识别它。 – Szymon

+1

完美。这非常有帮助。谢谢 – handroski

1

如果您要访问的哎[]从子类,则必须调用它是这样的:

double a[] = super.hey; 

希望工程为您服务!

+0

我明白了。不知道.super()。我需要改变这个代码的其他内容吗? – handroski

+1

请注意,super指的是父类,因此,如果父类包含公共X属性,则可以使用super.X访问该属性。 –

+0

调用父方法和构造函数的方式相同。 Nos,有了这些信息,希望你能弄清楚怎么做你想做的。 –