帮我看看继承问题。。。
public class Arr {--------------------编程问答-------------------- 为什取不到值!! --------------------编程问答-------------------- 帮忙看下为什么继承 后 子类不到父类的数组- - --------------------编程问答-------------------- Px px = new Px();先加载父类的,无参数构造方法。然后初始化自己。由于父类ArrInt没有初始化,所以报的是空指针异常。所以楼主这种方式比较危险。。 --------------------编程问答-------------------- 1.如3楼说的,没有构造方法。
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]);
}
}
2.main方法中的b和PX类中的b不是同一个变量。你直接调用了ppx方法,而未对b[]初始化。默认值就为0了。 --------------------编程问答--------------------
基本类型的初始化值不会为null但是其他对象类型的时候就会出现null了
楼主你要知道继承所继承的是父类而不是父类的对象,你new了一个父类的对象不贵影响到子类对象的构建的,所以你构建的Arr1的对象不会影响到你构建Px对象的,你Px对象中的super指向的还是一个新构建的Arr1对象。 --------------------编程问答-------------------- Px px=new Px();
的父对象中ArrInt没有初始化,是null值,调用空值报空指针。
楼主的arr的值不会传递到px中 --------------------编程问答-------------------- ls说的都很好了,lz可以改为通过构造器传入b数据来初始化
int[] b = arr.getArrInt();
Px px=new Px(b);
--------------------编程问答--------------------
数组不是基本类型,基本类型的只有8种,其它的都是引用类型,即对象类型,所以会出现null。
补充:Java , Java SE