如何在子类中增加数组的大小

时间:2014-05-12 01:35:34

标签: java

在子类中,是否可以增加在超类中声明为public的数组的大小。 能不能给我一个例子。

5 个答案:

答案 0 :(得分:2)

阵列按设计固定长度。创建数组时,将建立数组的长度。创建后,其长度是固定的你无法改变大小你可以做的是重新分配数组(创建一个最大化它的新实例(例如* 2)),但如果你这样做,你必须复制前一个数组的所有内容。 如果您想使用动态结构,请查看已经处理过数组等重新分配的ArrayList

答案 1 :(得分:0)

如果它被设置为受保护或公开,则为是:子类将能够编辑它的父项字段。

答案 2 :(得分:0)

您应该只使用动态数组:

Dynamic array

因为所有数组都是固定长度的,一旦定义就无法调整大小。

答案 3 :(得分:0)

使用ArrayList比使用固定大小的Array更好。

  ArrayList<String> ar =new ArrayList<String>();
  ar.add("Value");

答案 4 :(得分:0)

在下面的程序中,SuperArrayClass包含在subArrayClass中动态更改的arr。如果你提供的值小于之前的大小,那么它将抛出异常

class SuperArrayClass {
    public int arr[];
    private int size;

    SuperArrayClass(int size) {
        this.size = size;
        arr = new int[size];
    }

    public int getSize() {
        return size;

    }
}

class SubArrayClass extends SuperArrayClass {

    SubArrayClass(int size) {
        super(size);
    }

    /**
     * @param size
     *            :provide the new size of the array
     * @throws Exception 
     */
    public void changeSizeTo(int size) throws Exception {

        if (getSize()<  size) {
            int temp[] = new int[size];
            for (int i = 0; i < arr.length; i++) {
                temp[i] = arr[i];
            }
            arr = temp;
        } else {
            throw new Exception("Size provided is less than previous size");
        }
    }
}