문제

나는 이것이 매우 기본적인 질문이라는 것을 알고 있지만, 그것은 항상 나를 괴롭힌 질문입니다. 내가 이해할 수 있듯이, 당신이 Java에서 개인을 사기꾼이라고 선언하면 해당 수업 이외의 외부에서는 보이지 않습니다. 보호 된 경우 상속 클래스 및 동일한 패키지의 항목이 가능합니다 (해당 정의 중 하나가 잘못된 경우 수정).

이것은 동일한 패키지의 다른 비 상속 클래스가 아닌 상속 클래스에만 액세스 할 수있는 필드를 선언 할 수 없다는 것을 의미합니까?

이 주위에 방법이 있다는 점에 감사하지만, 이런 종류의 행동을 원할 때 사례가 있습니까?

분명히 위의 질문은 필드뿐만 아니라 방법에도 적용됩니다.

많은 감사합니다.

도움이 되었습니까?

해결책

보다: http://java.sun.com/docs/books/tutorial/java/javaoo/accesscontrol.html
패키지> 서브 클래스, 하위 클래스로만 볼 수는 없지만 동일한 패키지의 클래스로는 필드를 가질 수 없습니다.

다른 팁

원래:

  • 개인 : 수업에서만 접근 할 수 있습니다.
  • 공개 : 모든 수업에서 액세스 할 수 있습니다.
  • 보호 : 수업에 의해 액세스 가능, 모든 상속 클래스 및 현재 패키지 클래스 (편집).
  • 정의 된 범위 없음 : 현재 패키지의 모든 클래스에서 액세스 할 수 있습니다.

추가 정보 여기.

예, Java의 보호 된 액세스는 그런 식으로 조금 이상합니다. 왜 그것이 왜 바람직한지를 즉시 알 수 없습니다. 개인적으로 그것은 나를 괴롭히지 않습니다 필드 어쨌든 비 개인 분야가 마음에 들지 않기 때문에 (상수를 제외하고) 다른 멤버에게도 마찬가지입니다.

.NET에는 패키지/네임 스페이스 액세스 가시성 개념이 전혀 없지만 어셈블리 인 대안이 있습니다 ( "JAR 파일"은 정확히 동일하지는 않지만 닫습니다). 솔직히 네임 스페이스를 원합니다 그리고 배포 단위 가시성 옵션이지만 실망에 처한 것 같습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top