2014-12-10 19 views
0

자식을 통해 액세스 할 때 암시 적으로 상속되는 메서드 (부모에서 상속되는 최종 추상 메서드)는 항상 동일하게 액세스됩니까?액세스 수정 자 상속 : 추상 클래스의 final 메서드

암시 적 전달 규칙은 무엇입니까?

class package0.Parent {ACCESS_MODIFIER final void f();} 
class package1.B extends A { /* Implicit f?*/} 
class package2.C extends B {/* Implicit f? */} 

다음 : 항상 이 전달됩니까? 그렇다면 왜 케이스 1? 그리고 사건 3은?

  • 사례 1 : 부모 f()private 가시성이 전달되지 않는 경우 B로 볼 수 없습니다.
  • 사례 2 : 부모 f()public 인 경우 B 또는 C을 사용하는 사용자는 f에 대한 사용 가능 여부를 결정합니다.
  • 사례 3 : 부모 f()protected 인 경우 B은 메소드를 보호 된 것으로 "노출"합니다 (즉, C이이를 볼 수 있음).
+1

여기에서 의미하는 바를 특히 이해하기 어렵습니다. 특히 "추상적 인 최종"부분입니다. 당신에게 불명확 한 것에 대한 적절한 질문을 한 짧고 완전한 * 코드 *는 질문에 답하는 것이 훨씬 쉽습니다. –

+0

향상된 문구, 죄송합니다 – Whimusical

+0

"전달 된"의미는 아직 명확하지 않습니다. JLS 6.6이 아마도 여기에있는 최상의 리소스 일 것입니다. http://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.6 –

답변

0

당신의 말씨는 반투명합니다. 나는 당신의 질문을 해석하고있어 방법은 다음과 같습니다 그렇다면

class A{protected void f();} 
class B extends A{/* Can see f. */} 
class C extends B{/* Can see f? */} 

는, 대답은 '예 : Cf에 액세스 할 수있을 것입니다.