가 여기에 해당 클래스와 메소드이다 : 나는 플래시 게임 봇을 쓰고 있어요, 나는이의 위치를 나타내는 BoardCoordinate라는 인터페이스를 가지고 : 기본적으로하위 클래스로 인해 클래스가 인터페이스 구현을 중단하게합니까?
public class BoardTile implements BoardCoordinate
public class WordPath extends LinkedList<BoardTile>
public void inputCoordinates(Collection<BoardCoordinate> coords)
, 여기에서 일어나고있는 것은 이것이다 판. 보드의 타일을 나타내는 클래스를 BoardTile이라고하며 위치를 알고 있기 때문에 BoardCoordinate 인터페이스를 구현합니다.
저는 실제로 BoardTiles의 LinkedList 인 보드상의 경로를 나타내는 타일 목록을 가지고 있습니다. 마지막으로, 필자는 BoardCoordinates 콜렉션을 java.awt.Robot에 전달하여 플래시 게임에 요청 된 경로를 입력하는 메소드를 가지고있다. 컬렉션은 스크린 스크래퍼 클래스와 데이터 처리 패키지 사이의 잠재적 인 추악한 연결을 피하기 위해 통과되었습니다.
이/* The highest scoring path found. */
Wordpath highest = null;
/* ...
* ... find the highest scoring path, etc.
*/
if (longest != null) {
screen.inputCoordinates(longest);
}
내가받을 컴파일러 오류가 이것이다 : 유형 화면에서 메소드 inputCoordinates (컬렉션) 인수 (WordPath) 적용 할 수 없습니다
그래서 다음, 여기에 잘못된 코드입니다.
그러나 WordPath는 BoardCoordinate의 LinkedList입니다! 그리고 LinkedList는 Collection입니다! 무슨 일 이니?
은 물론, I는 LinkedList<BoardTile>
비록 Collection<BoardCoordinate>
아니지만 ...
질문에 대한 답변이 아니지만 디자인이나 클래스 이름 지정에 약간의 변경을 제안하고 싶습니다. 보드 타일 (BoardTile)은 게임 맵이나 게임 보드에 놓기 (또는 가지고있는 것)하지만, 타일은 좌표가 아니며 ** 좌표는 ** 좌표입니다. 인터페이스의 디자인이나 이름은 이것을 반영해야합니다 "현실 세계"속성. 작은 변화는 이제 보통 나중에 자신의 코드 (개인적인 경험을 이해하려고 할 때 지불합니다 ...) 또는 일단 디자인에 대한 의사 소통의 필요성을 느끼면 (다른 개인적인 경험 ;-)) 나는 디자인을 구성으로 바꿀 것입니다. 나는 ' –