2013-11-05 5 views
0

체스 게임을 만들고 있는데, 내 게임 보드에 "더미 (dummy)"조각을 채우려 고합니다. 슈퍼 클래스 조각에서 확장 한 서브 클래스를 만들었습니다. 하위 클래스는 Dummy라고합니다. 어쨌든 나는 그것의 인스턴스를 만들려고하고있다.추상 클래스와 다형성

Piece[][] pieces=new Dummy(); 

더미 클래스의 생성자는 graphics2d 페인트 메서드와 아무런 관련이 없다. 그러나 컴파일하는 동안 오류가 발생합니다. 그것은 "호환되지 않는 타입 조각 = 새로운 더미(); 필요 : 조각 [] [] 발견 : 더미"

그러나 이것은 조각의 하위 클래스이므로이 선언은 허용 되었습니까?

답변

3

배열에 Dummy을 직접 할당하지 마십시오. 먼저 배열을 만들고 배열의 요소 중 하나에 Dummy을 할당합니다.

Piece[][] pieces = new Piece[8][8]; 
pieces[0][0] = new Dummy(); // or whichever element you want 
+0

는 슈퍼 클래스의 인스턴스를 생성하지 않았다고 :
당신은 그렇게 할 수 있습니다? 그것은 추상이 아니기 때문에 이것은 허용되지 않습니다. – user2809437

+0

1) 당신은'조각'이'추상'이라고 말하지 않았습니다. 2) 그건 중요하지 않습니다. 당신은 언제나 참조 타입 인'abstract'의 _array_를 생성 할 수 있습니다. – rgettman

+0

죄송합니다. 하지만 그 정보에 관계없이 감사합니다. – user2809437

1

크기를 지정하지 않고 2 차원으로 값을 지정하려고합니다. 이는 잘못된 것입니다.
먼저 크기를 할당 한 배열을 만들어야하며, 그 값을 개별적으로 할당 할 수 있습니다.

Piece[][] pieces = new Piece[8][]; 
pieces[0] = new dummy[8]; 
pieces[1] = new dummy[8]; 

이 희망 대답은 당신을 도울 수 있습니다 :