程序如下面所示,在下面两个 ReverseArray 与SortArray 子类通过super.getArray()使用Array父类的数组时,无法有效的调用到父类中的数组,运行结果全部为0,如图import java.util.*;public class ArrayDemo {
    public static void main( String[] args ) {
        Array array = new Array( 6 );
        array.add( 1 );
        array.add( 2 );
        array.add( 3 );
        array.add( 4 );
        array.add( 6 );
        array.add( 5 );
        System.out.print("原数组的结果:");
        System.out.println(Arrays.toString( array.getArray() ));        ReverseArray rese = new ReverseArray( 6 );
        System.out.print(Arrays.toString( rese.getArray() ));
        System.out.println("————————反转数组的结果");        SortArray sort = new SortArray( 6 );
        System.out.print(Arrays.toString( sort.getArray() ));
        System.out.print("————————排序数组的结果");
    }
}class Array {
    private int temp[];
    private int foot;
    public Array ( int len ) {
        if ( len > 0 ) {
            this.temp = new int[ len ];
        } else {
            this.temp = new int[ 1 ];
        }
    }
    public boolean add ( int i ) {
        if ( this.foot < this.temp.length ) {
            this.temp[ foot ] = i;
            foot++;
            return true;
        }else {
            return false;
        }
    }
    public int[] getArray() {
        return this.temp;
    }
}class ReverseArray extends Array{
    public ReverseArray ( int len ) {
        super(len);
    }
    public int[] getArray() {
        System.out.print("父类数组传递到本反转类的结果:");
        System.out.println(Arrays.toString( super.getArray() ));
        int[] reverseArray = new int[ super.getArray().length ];
        int count = reverseArray.length -1;
        for ( int ix = 0; ix < reverseArray.length; ix++ ) {
            reverseArray[ count ] = super.getArray()[ix];
            count --;
        }
        return reverseArray;
    }
}class SortArray extends Array{
    int num;
    public SortArray ( int len ) {
        super(len);
    }
    public int[] getArray() {
        System.out.print("父类数组传递到本排序类的结果:");
        System.out.println(Arrays.toString( super.getArray() ));
        for ( int m = 0; m < super.getArray().length; m ++ ) {
            for ( int j = m;j < super.getArray().length; j ++  ) {
                if ( super.getArray()[j] < super.getArray()[m] ) {
                    num = super.getArray()[ m ];
                    super.getArray()[ m ] = super.getArray()[ j ];
                    super.getArray()[ j ] = num;
                }
            }
        }
        return super.getArray();
   }
}

解决方案 »

  1.   

    你new了3个不同的对象啊
      

  2.   

    打个比方,两小伙子跟他爸的脸长得一模一样,后来他爸爸不小心脸上给划了一刀,但是他两儿子的脸上并不会有伤(不要牵扯到生物学)。
    也就是说 父类原有属性跟方法能够被子类继承,但是 new 出来的父类对象 重新对此对象的属性做的改变不会被子类对象继承。
      

  3.   

    我明白了,那如果要把new的父类的数组的内容传递到两个子类该怎么操作呢?
      

  4.   

    是在main()中,子类的两个方法直接使用父类的那个数组就好了吗?新手上路,见笑了