如何将超类中数组的元素复制到java中的子类中的数组中?

时间:2017-09-23 15:48:41

标签: java arrays clone subclass superclass

例如:

class A
{
    int array[] = {1,2,3,4,5}
}
class B extends A
{
    int new_array[];
}

现在,我希望B类中的new_array应该包含与A类中的数组相同的元素。

注意: 我想要复制,但是想要照顾那种情况,当我们对复制的数组进行任何更改时,那么更改应该"不是"反映在原始数组中。

4 个答案:

答案 0 :(得分:0)

试试这个:

public class A {
  int arrayA[] = {1,2,4,5,3}; //unsorted array
}

public class B extends A {
  int arrayB[];

  public void exampleOfCopySortPrint() {
    arrayB = Arrays.copyOf(arrayA, 5); // copy the values of arrayA into arrayB
    // arrayB is now an entirely new array

    Arrays.sort(arrayB); // this sorts the array from small to large

    // print all elements in arrayB
    for (int i : arrayB) {
      System.out.println(i); // 1, 2, 3, 4, 5 (sorted)
    }
  }
}

您也不需要在B类中添加该字段。

如果你没有在类A中的protected int array[];数组字段上添加修饰符public或protected,请确保将2个类放在同一个文件夹/包中。

答案 1 :(得分:0)

A级{

int array[] = {1, 2, 3, 4, 5};

}

B类延伸A {

int new_array[] = array;

public void afterCopyArrayPrint() {
    for (int i : new_array) {
        System.out.println(i);
    }

}

}

public class ArrayTest {

public static void main(String[] args) {
    B ob = new B();
    ob.afterCopyArrayPrint();
}

}

答案 2 :(得分:0)

// TRY THIS
public class Array 
{
    int[] a = {1, 2, 3, 4, 5};
    int length = a.length;
}

class Array2 extends Array 
{
    int[] newArray = new int[super.length];

    public static void main(String[] args)
    {
        Array obj = new Array();
        Array2 obj2 = new Array2();
        for (int i = 0; i < obj.length; i++) {
            obj2.newArray[i] =obj.a[i];
            System.out.println(obj2.newArray[i]);
        }
    }
}

答案 3 :(得分:0)

在学习和浏览网页后,我终于学会了如何在不使用循环的情况下复制数组。 解决方案如下:

class A
{
    int array[] = {1, 2, 3, 4, 5};
}
class B extends A
{
    int copyArray[] = array.clone();
}

我发现这个clone()方法非常有用!