Java абстрактный класс, определяющий размер массива - PullRequest
0 голосов
/ 09 октября 2011

У меня есть абстрактный класс, и в этом абстрактном классе у меня есть массив, и я хочу, чтобы каждый класс, расширяющий его, имел массив длиной 2 дюйма, несмотря ни на что.Я знаю, что вы можете определить размер массива в методах, но это все, что вы можете сделать. Вот некоторый код

public abstract class entity{

int pos[]

// want this variable to be two ints long no matter what extends it
}

Возможно ли это?

Ответы [ 4 ]

4 голосов
/ 09 октября 2011

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

private int[] pos = new int[2];

protected void setPos(int index, int value) {
    pos[index] = value;
}

protected int getPos(int index) {
    return pos[index];
}
2 голосов
/ 09 октября 2011

Зачем вам нужны расширяющие классы для его инициализации?Вы можете инициализировать его как int[2] в самом суперклассе.

Кстати, ваш класс entity должен называться Entity.pos может быть final или private или обоими.

1 голос
/ 09 октября 2011
protected final int[] pos = new int[2];

Объявление его protected гарантирует, что все типы, производные от него, будут иметь к нему доступ.

Объявление его final гарантирует, что ни один производный тип не изменит то, на что указывает ссылка.

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

попробуйте

int[] pos = new int[2];
...