Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何将超类中的数组元素复制到子类中的数组中?_Java_Arrays_Clone_Subclass_Superclass - Fatal编程技术网

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

在java中,如何将超类中的数组元素复制到子类中的数组中?,java,arrays,clone,subclass,superclass,Java,Arrays,Clone,Subclass,Superclass,例如: 现在,我想说明类B中的新_数组应该包含与类A中的数组相同的元素 注: 我想复制,但要注意这样一种情况,即当我们在复制的数组中进行任何更改时,该更改不应反映在原始数组中。尝试以下操作: class A { int array[] = {1,2,3,4,5} } class B extends A { int new_array[]; } 您不需要在类B中也添加字段 如果不在数组字段上添加修改器public或protected,如protected int array[];

例如:

现在,我想说明类B中的新_数组应该包含与类A中的数组相同的元素

注: 我想复制,但要注意这样一种情况,即当我们在复制的数组中进行任何更改时,该更改不应反映在原始数组中。

尝试以下操作:

class A
{
    int array[] = {1,2,3,4,5}
}
class B extends A
{
    int new_array[];
}
您不需要在类B中也添加字段

如果不在数组字段上添加修改器public或protected,如protected int array[];在A类中,确保将这两个类放在同一文件夹/包中。

A类{

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类{

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

公共类阵列测试{

int new_array[] = array;

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

}

}

在学习和浏览网络之后,我终于学会了如何在不使用循环的情况下复制阵列。 解决办法如下:

// 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]);
        }
    }
}

我发现这个克隆方法真的很有用

为什么不直接继承数组?如何继承数组?就像你继承其他东西一样。如果你能告诉我怎么做,我将非常感激。实际上,目前我正在学习Java。因此,目前对该语言不太熟悉。继承包含在很多Java教程中。我建议你从那里开始研究。现在我想让你再问一件事,假设我想对数组进行排序,但不想对给定的数组进行任何更改。那么,那该怎么办呢?@Jorvis喜欢这样。Arrays是一个特殊的util类,它包含大量用于操作数组的静态方法。只需将数组的值赋给空数组,数据就会被复制到新的数组变量中。但是,如果使用您的解决方案,假设我希望对给定数组执行排序,但希望给定数组保持不变,那么您的复制解决方案将不起作用。
// 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]);
        }
    }
}
class A
{
    int array[] = {1, 2, 3, 4, 5};
}
class B extends A
{
    int copyArray[] = array.clone();
}