public class Arr { public static void main (String [] args ) {
Arr1 arr =new Arr1(5);
arr.add(1);
arr.add(12);
arr.add(21);
arr.add(122);
arr.add(23);
int b[]=arr.getArrInt();
Px px=new Px();
px.ppx();
}

}
class Arr1{
static int count;
public int [] ArrInt;
public Arr1() {
}
public Arr1(int leng){
leng=leng;
if(leng>0) {
ArrInt=new int[leng];
}if(leng<0) {
System.out.println("请输入正确名字");
}
}
public void add(int i) {
this.ArrInt[count]=i;
this.count++;
}
public int[] getArrInt () {
return ArrInt;
}}class Px extends Arr1 {

public int b[]=super.getArrInt();
public void ppx(){
System.out.println(b[1]);
}

}

解决方案 »

  1.   

    Px px = new Px();先加载父类的,无参数构造方法。然后初始化自己。由于父类ArrInt没有初始化,所以报的是空指针异常。所以楼主这种方式比较危险。。
      

  2.   

    1.如3楼说的,没有构造方法。
    2.main方法中的b和PX类中的b不是同一个变量。你直接调用了ppx方法,而未对b[]初始化。默认值就为0了。
      

  3.   

    基本类型的初始化值不会为null但是其他对象类型的时候就会出现null了楼主你要知道继承所继承的是父类而不是父类的对象,你new了一个父类的对象不贵影响到子类对象的构建的,所以你构建的Arr1的对象不会影响到你构建Px对象的,你Px对象中的super指向的还是一个新构建的Arr1对象。
      

  4.   

    Px px=new Px();
    的父对象中ArrInt没有初始化,是null值,调用空值报空指针。
    楼主的arr的值不会传递到px中
      

  5.   

    ls说的都很好了,lz可以改为通过构造器传入b数据来初始化
     int[] b = arr.getArrInt();
            Px px=new Px(b);
      

  6.   


    数组不是基本类型,基本类型的只有8种,其它的都是引用类型,即对象类型,所以会出现null。