2011-03-08 5 views
1

상속 체인에서 상위 및 상위 메소드에 액세스하기위한 적절한 규칙은 무엇입니까? 예를 들어, methodA()은 기본 조상 클래스에 있고 methodB()은 상위 클래스에 있습니다. 부모를 확장하는 하위/하위 클래스 (상위 클래스/기본 클래스를 확장 한 하위 클래스)에있는 경우 methodA()에 액세스하는 적절한 방법은 무엇입니까?조상 및 부모 메소드에 액세스하기위한 올바른 (Java) 규칙?

분명히 super.super.methodA()은 허용되지 않습니다.

무엇이 작동합니까? super.methodA(), this.methodA()이며 단순히 methodA()을 소유하고 있습니다.

는 조상 클래스에있는 methodA() 것을 호출하는 '올바른'방법은 위의 삼가지 경우입니다

? methodA() 만약

답변

2

는 조부모 클래스 만을 정의하고 단순히 제대로 상속 된 메소드를 호출 자식 클래스의 methodA()를 호출 부모 클래스 또는 하위 클래스에서 재정의되지 않습니다.

+0

나는 정말로 얻고 싶었던 것이 다양한 형태의 메소드 호출에서 애매한 것이라고 생각한다. 외부 프로그래머 (특히 API/문서가없는 경우)는 methodA()가 상주하는 위치를 어떻게 알 수 있습니까? super.xxx는 부모 호출을 의미합니다. this.xxx는 거주자 호출을 암시하므로 간단히 xxxx() – Brownbay

+1

@Chrys : 모호성이 없습니다. 메소드 호출은 가장 특정한 유형의 메소드로 해석됩니다. 의미있는 API 또는 문서를 제공하지 않으면 코드 사용자는 라이브러리 작성자와 동일한 방식으로 코드를 찾아야합니다. 메서드가 정의 된 가장 가까운 클래스를 찾기 위해 상속 계층 구조를 탐색합니다. in. –

1

클래스 조부모 방법에 액세스하는 것은 허용되지 않습니다. 자세한 내용은 Why is super.super.method(); not allowed in Java? 양식을 참조하십시오.

+0

내 질문에 약간 모호한 것 같아. 내가 methodA() 거기에 내 질문에 거기에 메서드 호출 중 하나를 사용하여 액세스 할 수 있어요. 부모 클래스가 조부모를 확장하므로 상위 클래스를 확장하는 모든 클래스는 상속 체인을 통과하여 조부모 메소드에 액세스 할 수도 있습니다. – Brownbay

관련 문제