Java, расширение класса с помощью конструктора в суперклассе - PullRequest
0 голосов
/ 09 октября 2018

У меня есть класс, который определяет поле "координаты", которое представляет собой массив без длины и подкласс, где мне нужно установить длину массива для работы с ним. Так что вопрос в том, как мне изменить длину массива координатв подклассе.Вот код: Суперкласс:

abstract class Vector implements sample {       

    private int[] coordinates;  

    public Vector (int[] coordinates) {

    }
}

И подкласс:

class Vector3D extends Vector {

    public Vector3D(int[] coordinates) {
        super(coordinates);

    }
}

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Ваш родительский класс (Vector) должен установить личное поле.В настоящее время параметр и переменная экземпляра не связаны.

Это выполнит работу:

public abstract class Vector implements Sample {
   private int[] coordinates;

   public Vector(int[] coordinates) {
      this.coordinates = coordinates;
   }
}



public class Vector3D {
   public Vector3D(int[] coordinates) {
      super(coordinates);
   }
}

// usage:
new Vector3D(new int[]{ 1, 2, 3 }); // Vectors coordinate size: 3. Content: 1, 2, 3

Это передаст массив Vector3Ds родительскому элементу, и его размер будет таким же, как и для класса Vector3D.

0 голосов
/ 09 октября 2018
abstract class Vector implements sample {       
    private int[] coordinates;  
     public Vector (int[] coordinates){
         this.coordinates=coordinates;
     }
}

Если вы хотите инициализировать координаты, вызывая новый Vector3D (1,2,3):

class Vector3D extends Vector {

    public Vector3D(int n1,int n2,int n3) {
       super(new int[]{n1,n2,n3});
   }
}
...