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



在子类中,是否可以增加在超类中声明为public的数组的大小?你能给我举个例子吗?

数组按照设计是固定长度的。array的长度是在创建array时确定的。在创建之后,它的长度是固定的你不能动态地改变数组的大小你能做的是重新分配数组(创建一个最大化大小的新实例(例如*2)),但是如果你这样做,你必须复制前一个数组的所有内容。如果你想使用一个动态结构,看看ArrayList已经处理数组的重新分配等

如果它被设置为protected或public,则是:子类将能够编辑它的父字段

你应该使用动态数组:

动态数组

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

使用数组列表比使用固定大小的数组要好。

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

在下面的程序中,SuperArrayClass包含的arr会在subArrayClass中动态改变,如果你提供的小于之前的大小,在这种情况下,它会抛出异常

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");
        }
    }
}

最新更新