파생 클래스에 전혀 노출되지 않도록하거나 적어도 서브 클래스가 super()
을 호출 할 때까지 클래스 멤버를 선언 할 수 있는지 궁금합니다. Java에 이러한 기능이 있습니까?거기에 슈퍼 클래스의 멤버를 파생 클래스에서 숨길 수있는 방법이 있습니까?
class A{
static int foo = 1;
}
class B extends A{
public B(){
System.out.print(foo);/// how do I make this not work?
}
}
편집 : 실수로 솔루션에 대한 내 질문을 입력했습니다 (실제 코드에 개인 코드가 누락되었습니다). 회원이 비공개 그렇다면,
그러나 B.에서 표시되지 않습니다, - 그것은 의미있는 질문 :
'foo'는 'A'에 'private'로 표시했기 때문에 이미'B'에 보이지 않습니다. – rgettman
'super.somethingHere'를 사용할 때까지는 사적인 것으로 보이는 것을 원한 것처럼 보입니다. 맞습니까? 음, 이것은 불가능합니다. 유일한 해결책은'protected'를 사용하는 것이므로 자식 클래스 만 부모 클래스 필드/메소드에 액세스 할 수 있습니다. –
@LuiggiMendoza 한 상황에서 가능합니다 : A와 B가 동일한 최상위 클래스를 공유하는 경우. B는'super.foo'에 접근 할 수 있지만'foo'는 접근 할 수 없습니다 – ZhongYu