2013-10-27 2 views
0

저는 숙제에이 문제가 있으며 인터넷에서 해결책을 찾지 못하는 것 같습니다.JAVA는 캐스팅을 통해 서브 클래스 메소드를 찾지 않습니다.

필자는 수퍼 클래스와 그 하위 클래스를 가지고 있습니다. 다른 클래스에서는 매개 변수로 메서드에서 슈퍼 클래스를 사용해야하지만 하위 클래스에서는 메서드가 필요하지만 컴파일러에서는 cant가 슈퍼 클래스를 캐스팅하면 찾을 수 없습니다. 내 코드는 다음과 같이 smthing과 같습니다

나는 오류가 기호를 찾을 수 없습니다 얻을
public class A{...} 

public class B extends A{ 
... 
public boolean methodX(){...} 
} 

public class DifferentClass{ 

public void methodY(A a){ 
if(a instanceof B){ 
(B)a.methodX(); 
} 
} 
} 

는, 그러나 이것은 내가 교사가 우리에게 말했다 나의 클래스와 메소드를 구성해야하는 방법이다 (수퍼 클래스해야, 메소드가있는 서브 클래스, 주어진 수퍼 클래스의 매개 변수가있는 다른 클래스의 메소드). 도움

답변

1

캐스트가 잘못에 대한

덕분에, 그것은 ((B) a).methodX()

+0

ohh jesus .. 이런 어리석은 실수는 정말 고마워요. – fagyi

2

.이 주조보다 더 높은 우선 순위를 가지고 있어야한다. 따라서 다른 괄호 세트가 필요합니다.

((B) a).methodX();