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
접근 제어자
접근 제어자는 클래스, 메서드, 인스턴스, 클래스 변수를 선언할 때 사용된다. 자바에서 사용하는 접근제어자는 public, protected, package-private, private가 있다. 상속에서는 접근이 힘든 접근제어자부터 접근이 용이한 순서로 순차적으로 단계를 하양 조정 할 수 있다.(protected → public)
•
public
◦
누구나 접근가능
•
protected
◦
같은 패키지에 있거나 상속 받은 경우 사용 가능
•
package-private
◦
아무 접근제어자를 주지 않은 경우, 같은 패키지 내에서 접근 가능
•
private
◦
같은 클래스에서만 접근 가능
classpath
클래스를 찾기 위한 경로이다. jvm이 프로그램을 실행할 때, 클래스 파일을 찾는데 클래스패스를 사용한다.
classpath를 지정하기 위한 두 가지 방법
•
CLASSPATH 환경 변수 사용
•
java runtime에 -classpath 옵션 사용