2014-05-22 5 views
1

나는 다음과 같은 hirarchy이 : method2 새로운 s을 생성하는 테스트 코드가있다 : Abstractclass2에서서브 추상 클래스에서 메소드를 액세스하는 방법

Interface s 
Abstractclass1 implements s 
Abstractclass2 extends Abstractclass1 

s/Abstractclass1에서 인식하는 방법이를 개체,이 개체에 method2을 사용하고 싶습니다. 어떻게 접근합니까?

+1

실제 코드/오류로 붙여 넣으십시오. 입력 한 내용과 구별하기 어렵습니다. –

+0

할 수 없습니까? Abstractclass2에 s를 다운 캐스팅하지 않으면 method2에 액세스 할 수 없습니다. – Icewind

답변

4

정적 유형이 Abstractclass1 (또는 s) 인 개체에 method2을 호출 할 수있는 것은 아닙니다.

당신이이 Animal (아는 사람, 그것을 실행에 Cat 수 있음)이있는 경우가 bark()를 호출 할 수 없습니다

그래서, 무엇을 할까? 정적 유형을 Abstractclass2으로 변경하거나 다운 캐스트 (예 : ((Abstractclass2) yourObject).method2)를 변경하십시오.

+0

그래서 유형을 먼저 확인해야합니다. 가정 할 때 (그리고 내가 한 경우) - 그러면 어떻게 접근합니까? – Rotemk55

0

"S"의 인스턴스를 Abstractclass2로 타이프 캐스팅해야합니다.

void myMethod(S myparam) 
{ 
    if (myparam instanceof Abstractclass2) 
    { 
    ((Abstractclass2)myparam).method2(); 
    } 
} 
관련 문제