클래스는 자바에 공개해야하지 않는 한 사용 패키지 가시성 (기본값),패키지 가시성
패키지 가시성
답변
당신이 어떤 액세스 한정자 (즉, 공공 개인 또는 보호)하지 않고, default
수정 예에 의해 얻을 무엇, 그것은을 의미하는 이유 특정 패키지 내의 모든 사용자에게 표시됩니다. 따라서 수업을 자체 패키지로만 액세스 할 수있게하려면 default
으로 이동해야합니다.
더 읽기 : Controlling Access
내 understaning는, 패키지/기본 액세스 패키지 내부위한 패키지 인터페이스, 패키지 외부에서 사용해서는 안 즉 클래스를 형성하지 않습니다 즉 클래스입니다.
Rostislav Matl이 말했듯이 패키지 인터페이스에 포함되지 않는 것을 만들 때 유용합니다.
예를 들어, 패키지가 있고 인터페이스와 서비스의 적어도 하나의 구체적인 구현을 제공한다고 가정 해 보겠습니다.
이 서비스를 사용하는 사람들은 귀하가 제공하는 구체적인 수업 중 하나를 사용하고 인터페이스를 중요하게 생각하지만 그 이외의 많은 것을 신경 쓰지 않을 것입니다. 우리의 서비스는 데이터베이스와 대화해야하며 데이터베이스 쿼리의 결과를 자체 데이터 형식 (계약서 양식)으로 매핑 할 수 있어야합니다.
필자는 유틸리티 유형 메서드가 포함 된 패키지 개인 도우미 클래스를 정기적으로 만들거나 필요한 매핑과 같은 작업을 수행한다는 것을 알게되었습니다. 패키지 내부의 다른 클래스는이 헬퍼를 사용할 수 있지만 패키지 외부의 아무도 볼 수 없으므로 언제든지 변경할 수 있으므로 기본 (패키지 비공개) 가시성이 완벽합니다.
우리는 우리의 인터페이스가 :
이것은 몇 가지 코드를 사용하여 예입니다
public interface UsefulService {
Collection<DataThings> getThings(Identifier id);
}
을 ... 그리고 우리의 구체적인 구현 :
public class JdbcUsefulServiceImpl implements UsefulService {
//We can break the code for the mapping out into its own class
private Mapper mapper;
@Override
public Collection<DataThings> getThings(Identifier id){
DatabaseQueryResult queryResult = //Code to hit a database and return objects from that domain model
Collection<DataThings> result = mapper.mapFromDatabaseToServiceDomain(queryResult);
return result;
}
}
그런 다음 우리는 우리의 매퍼가 있습니다. 우리는 서비스를 우리가 패키지 개인 가시성을 사용할 수 있도록 내부적으로 작동 걱정하는 패키지 외부 사람이 필요하지 않습니다 우리는이 작업 수행에 원하는대로 우리는 많은 클래스를 가질 수 있습니다
class Mapper {
Collection<DataThings> mapFromDatabaseToServiceDomain(DatabaseQueryResult queryResult){
//magic to map objects goes here
}
}
우리가 가진 장점 그러나 우리는 항상이 Mapper 클래스를 변경할 수 있지만, 우리가 원하거나 삭제하거나 새로운 패키지 개인 클래스를 생성 할 수 있으며, 우리는이 패키지 안에있는 유일한 (즉각적인) 효과가 있음을 알고 있습니다. 즉각적인 효과는 컴파일러 오류와 심각한 문제를 의미합니다. 분명히 행동을 바꾸면 서비스를 중단 할 수는 있지만 자동화 된 테스트 스위트를 통해 잡을 수 있습니다. P
- 1. PHP 친구/패키지 가시성
- 2. NetBeans 6.9 및 JUnit 4.8.2 패키지 가시성 문제
- 3. 가시성 일정
- 4. plugin.xml에서 visibleWhen을 사용하여 플러그인의 명령 가시성 제한
- 5. 패키지?
- 6. 패키지
- 7. Three20의 속성 가시성 변경
- 8. WPF 이미지 가시성
- 9. ThumbnailToolBarButton에 대한 가시성 설정
- 10. IValueConverter 가시성 속성
- 11. 레이아웃 관리자의 가시성 문제
- 12. cc.net 프로젝트 가시성
- 13. MDI 자식 폼은 가시성
- 14. 레일에서 세션 변수의 가시성
- 15. CSS 속성 : 표시와 가시성
- 16. JQuery와 asp.net 버튼 가시성
- 17. Objective-C++ 가시성 질문
- 18. 팝업 대 가시성 전환
- 19. GridView 조건부 버튼 가시성
- 20. PHP 객체 지향 가시성
- 21. Argo UML에서 가시성 표시
- 22. 추상 클래스의 속성 가시성
- 23. Pex로 인한 가시성 문제
- 24. 체크 박스 가시성 변경
- 25. WPF 도구 설명 가시성
- 26. 안드로이드 - GONE 여기 가시성
- 27. 포크 - 조인에서의 메모리 가시성
- 28. Eclipse의 ActivityManager 가시성
- 29. WPF 목록 - ListItem 가시성
- 30. vb.net 모듈 가시성
약간의 배경을 읽으면 도움이 될 것입니다. [Thinking In Java] (http://www.mindview.net/Books/TIJ/) 5 장. 이전에 모두 작성되었습니다. –
인터페이스의 경우 기본 표시 여부는 공개입니다. ;) –