JAVA父类调用子类方法访问成员变量数组的问题

父类

 public class Father {

    public Father(){
        protected_method(0);
        protected_method(1);
    }

    public Integer protected_method(int i){
        Integer integer= new Integer(i);
        return integer;
    }
}

子类

 public class Child extends Father {

    public Integer[] integers= new Integer[2];

    public Child(){
        super();
    }

    public Integer protected_method(int i){
        Integer integer= new Integer(i);
        integers[i]= integer;
        return integer;
    }
}

子类在构造的时候会出错
Exception in thread "main" java.lang.NullPointerException
integers是null array
如果integers不是数组的话就不会报错

 public class Main {

    public static void main(String[] args) {
        Child c= new Child();
    }
}

如果integers不是数组的话就不会有问题

Father f=new Child();
而且数组长度为0时为空数组 null,就是空指针了

我发现问题是因为 public Integer[] integers= new Integer[2];这句是在构造函数里的super();之后执行的。所以是null array,但是一个android的程序结构就是这样,有没有什么办法能够实现protected_method这个方法里访问数组?

按照你这个思路感觉执行顺序是定死的,所以肯定会出现null array的情况,如果只是想父类调用子类的方法,是不是可以尝试不在构造方法里就调用

现象是:new Child时先调用父类构造方法,父类构造中再重写的子类的方法,此时子类的变量还没有初始化,子类的构造方法还没有运行。
public Child(){
super(); ------------》也可以去掉
}

方法具有多态性,子类在调用父类方法时,父类方法中的protected_method方法执行子类中的方法,但是由于子类初始化在父类初始化之后,所以子类的integers还是null
,因此在执行 integers[i]= integer;时会抛出空指针异常