package
- 클래스를 구분짓는 폴더 개념
- 자바는 패키지의 가장 상위 디렉토리(root)에서 실행해야 한다는 약속이 있기 때문에 해당 패키지로 가서 컴파일하지 않는다.
- 소스에 가장 첫 줄에 패키지 선언, 하나만 선언이 되어야 한다.
- 패키지 이름과 위치한 폴더의 이름이 같아야하고 패키지 이름은 java로 시작하면 안된다.
- 모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있다. 이 둘을 합쳐야 완전하게 한 클래스로 표현한다고 할 수 있다.
- 보통은 기본 패키지의 이름은 도메인 네임을 거꾸로 뒤집은 형태이다.
- 패키지 이름 지정 규칙
- FQCN(Fully Qualified Class Name)
Namespace
import
- 다른 패키지명에 있는 클래스를 찾지 못할때 사용
- 패키지에 다수 클래스를
import 해야 한다면 import 패키지.*를 사용한다.
import static 의 경우 static한 변수와 static한 메서드를 사용하고자 할 때 용이하다.(생각보다 나쁘지 않은 기능이다. Junit과 같이 Assertion이나 기타 등등을 사용할 때 유용하다.)
- import 한 패키지의 하위 패키지는 import 되지 않는다.
- Plus Constant Interface - 상수를 모아 놓은 인터페이스에 대한 ANTI pattern
접근 제어자
<aside>
📌 접근 제어자는 클래스, 메서드, 인스턴스, 클래스 변수를 선언할 때 사용된다. 자바에서 사용하는 접근제어자는 public, protected, package-private, private가 있다. 상속에서는 접근이 힘든 접근제어자부터 접근이 용이한 순서로 순차적으로 단계를 하양 조정 할 수 있다.(protected → public)
</aside>