如何访问一个受保护的静态内部类?
public class A{ protected static class AInner{ public void test(){ } } }
public class B extends A{ public void hello(){ //怎样才能访问AInner中的test方法呢? } }
为什么当A和B在不同包中时,new AInner().test()会编译报错呢?而当A和B在同一个包中,却不会报错?
new AInner().test()
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
A B A.AInner의 생성자가 기본 생성자이고 기본 액세스 수준에서는 동일한 패키지의 하위 클래스가 을 사용할 수 있으므로 여러 패키지에서 오류를 보고합니다. 따라서 클래스 A를 변경할 수 있다면 이식된 생성자 또는 공개 수준 생성자를 작성할 수 있습니다.
A
B
A 클래스를 바꾸지 않으면 이렇게 보시면 됩니다. 접근 가능한 데모를 작성했습니다.
구조
카테고리 A:
카테고리 B:
왜요? protected가시 범위는 패키지 및 상속된 클래스 내에서 표시되는 가시 범위에 따라 결정됩니다. 접근 방법은 무엇인가요? 강제로 액세스해야 하는 경우 리플렉션을 통해 가시성을 수정하면 됩니다.
protected
으아악A
B
A.AInner의 생성자가 기본 생성자이고 기본 액세스 수준에서는 동일한 패키지의 하위 클래스가 을 사용할 수 있으므로 여러 패키지에서 오류를 보고합니다.따라서 클래스 A를 변경할 수 있다면 이식된 생성자 또는 공개 수준 생성자를 작성할 수 있습니다.
A
클래스를 바꾸지 않으면 이렇게 보시면 됩니다.접근 가능한 데모를 작성했습니다.
구조

카테고리 A:
으아악카테고리 B:
으아악왜요?
protected
가시 범위는 패키지 및 상속된 클래스 내에서 표시되는 가시 범위에 따라 결정됩니다.접근 방법은 무엇인가요? 강제로 액세스해야 하는 경우 리플렉션을 통해 가시성을 수정하면 됩니다.