2017-09-23 7 views
-2

Par exemple:Comment copier des éléments d'un tableau dans une superclasse dans un tableau de la sous-classe java?

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

Maintenant ici, je veux que new_array dans la classe B devrait être contenant les mêmes éléments que tableau dans la classe A.

REMARQUE: Je veux copier, mais vouloir prendre soin de ce cas où lorsque nous faisons un changement dans le tableau copié alors le changement ne devrait pas "reflété" dans le tableau original.

+0

Pourquoi ne pas simplement hériter 'array'? –

+0

Comment hériter d'un tableau? – Jorvis

+0

De la même manière que vous héritez de n'importe quoi d'autre. –

Répondre

0

Après avoir étudié et surfer sur le web, j'ai finalement réussi appris à copier un tableau sans utiliser des boucles. La solution est la suivante:

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

Je trouve cette méthode clone() vraiment utile!

0

Essayez ceci:

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

Vous n'avez pas besoin d'ajouter également le champ en classe B.

Si vous n'ajoutez pas le public modificateur ou protégé sur le champ de tableau comme protected int array[]; dans la classe A, assurez-vous de placer les 2 classes dans le même dossier/paquet.

+0

Ok, j'ai compris. – Jorvis

+0

Maintenant, je veux que vous vouliez demander une chose de plus, cela suppose que je veux trier un tableau, mais je ne veux pas effectuer de changements dans le tableau donné. Alors, que faire? – Jorvis

+0

@Jorvis comme ça. 'Arrays' est une classe util spéciale, qui contient des tas de méthodes statiques pour manipuler les tableaux. –

0

class A {

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

}

classe B extends 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(); 
} 

}

+0

juste affecter des valeurs tableau à tableau vide, les données seront copiées dans la nouvelle variable de tableau –

+0

Mais avec votre solution, supposons que je veux effectuer un tri sur le tableau donné mais que le tableau donné reste inchangé alors votre solution de copie ne sera pas travail. – Jorvis

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