2011-10-09 2 views
0

나는 추상 클래스를 가지고 있으며, 추상 클래스에는 배열이 있고 배열을 가지고있는 모든 클래스가 배열을 2 ints long으로 가지길 원한다. 메소드에서 배열 크기를 정의 할 수 있다는 것을 알고 있지만 할 수있는 모든 것입니다. 일부 코드는 다음과 같습니다.배열 크기를 정의하는 Java 추상 클래스

public abstract class entity{ 

int pos[] 

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

이것이 가능합니까?

답변

4

수퍼 클래스에서 배열을 인스턴스화하고 메소드를 사용하여 수퍼 클래스에 대한 액세스를 제한 할 수 있습니다. 그렇게하면 하위 클래스가 배열의 크기를 변경할 수 없습니다. 그것은 protected 선언

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

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

protected int getPos(int index) { 
    return pos[index]; 
} 
0

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

왜 당신이 확장 클래스를 초기화해야합니까이 시도? 수퍼 클래스 자체에서 int[2]으로 초기화 할 수 있습니다.

BTW 클래스 entityEntity이라고해야합니다. posfinal 또는 private 또는 둘 다일 수 있습니다.

1
protected final int[] pos = new int[2]; 

에서 파생 된 모든 종류의가에 액세스 할 수 있습니다 보장합니다.

final을 선언하면 참조 유형이 변경되는 파생 유형이 없어집니다.

관련 문제