2016-06-14 10 views
2

내 질문은 매우 구체적입니다. 나는 부모와 자식 클래스와 함께 일하고있다. 특정 지시에 따라 작업하고 있으며 하위 클래스의 부모 클래스에서 indexOf() 메서드를 재정의 할 것입니다. 매개 변수가 부모 클래스 객체 인 경우 은 매개 변수 값을 기준으로 부모 클래스의 indexOf() 값을 반환합니다. 매개 변수가 String 객체 인 경우 은 문자열 매개 변수에서 만든 부모 클래스 객체를 전달할 때 부모 클래스의 indexOf() 값을 반환합니다.부모/자식 클래스 관계 - indexOf

굵게 표시된 부분은 내가 얻지 못하는 부분입니다. 이런 종류의 작업을하는 것은 이번이 처음이므로 접근 방법을 잘 모릅니다. 이것이 내가 지금까지 가지고있는 것입니다 :

public class KillList extends LinkedList<AssassinNodeData> { 

public int indexOf(Object data) { 
    if (data instanceof AssassinNodeData) { 
     return ..... 
    } else if (data instanceof String) { 
     return .... 
    } else 
     return -1; // under all other circumstances 
        // circumstance to indicate parameter is not of current class 
} 
} 

어떤 제안이나 해결책이 좋을까요?

상위/하위 클래스 주제에 대해 수퍼 클래스를 확장하는 대신 LinkedList로 확장 할 때 수퍼 클래스에서 getter/setter 메서드에 액세스하는 특별한 방법이 있습니까?

다음은 내가 수행중인 작업의 예입니다. 컴파일러는 수퍼은 "기호를 찾을 수 없습니다"와 getter 메소드의 위치가 서브 클래스에 저를주는 것이 아니라 : 당신은에 액세스하려면 여기를 super 키워드를 사용할 필요가

@Override 
public String toString() { 
    return getKiller() + "is stalking" + getPlayer(); 
} 

답변

3

을 부모의 indexOf :

public int indexOf(Object data) { 
    if (data instanceof AssassinNodeData) { 
     return super.indexOf(data); 
    } else if (data instanceof String) { 
     return super.indexOf(new AssassinNodeData((String)data)); 
    } else { 
     return -1; 
    } 
} 
+1

나는 본다! 두 번째 조건에서 데이터 위에 문자열 유형을 변환해야합니까? – Ani

+1

@Ani'Object'를 매개 변수로 취할 수있는 생성자가 없다면, 예, 컴파일 타임 오류를 방지하기 위해 캐스팅이 필요합니다. – 4castle

+0

고마워요! :) 나는 그것을 체크 할 것이다 – Ani