【问题标题】:How do I access an array from a parent class in a child class?如何从子类中的父类访问数组?
【发布时间】:2014-02-18 22:15:44
【问题描述】:

我有一个类,其中数组是全局声明的,public 这些数组是通过此类中的方法初始化的。它们不在构造函数内部。我有另一个类,我使用extends 允许我访问这些值。当然,我收到一个空指针异常。我将如何解决这个问题?我不需要覆盖这些数组。只需要在方法中使用它们来填充其他数组。

我已经有一段时间了。我对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];
    }
   }
 }

【问题讨论】:

  • 您忘记用语言标记问题。
  • 啊,看来@Damien 让我满意了,谢谢提醒

标签: java parent-child superclass extends


【解决方案1】:

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

你可以

  • 在构造函数中实例化它

  • 或在子类的fillYou() 方法中实例化它(在使用之前)。

【讨论】:

  • 所以如果我从 Parent 类中使用相同的名称,编译器会识别它吗?
  • 是的,它会识别它。
  • 完美。这很有帮助。谢谢
【解决方案2】:

如果你想从子类访问hey[],你必须这样调用它:

double  a[] = super.hey;

希望它对你有用!

【讨论】:

  • 我明白了。不知道 .super()。我是否需要对此代码进行其他更改?
  • 考虑到super指向父类,因此,如果父类包含公共X属性,您可以使用super.X访问它
  • 调用父方法和构造函数也是一样的。不,有了这些信息,希望你能弄清楚如何做你想做的事。
  • 谢谢。那么我是否必须在提到的@Szymon 之类的任一类的构造函数中实例化它?
  • 是的,我认为您必须首先在您正在调用的构造函数中初始化数组才能使用它。
猜你喜欢
  • 2017-10-12
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多