[자바 라이브 스터디] 7주차 - 패키지
- 목표) 자바의 패키지에 대해 학습하세요.
1. package 키워드
- 정의) 서로 관련된 클래스들을 그룹 단위로 묶어 놓는 폴더 개념
- 물리적으론 클래스 파일을 포함하는 하나의 디렉토리
- 특징)
- 클래스 또는 인터페이스를 포함시킬 수 있음
- 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재 가능함
- 클래스의 실제 이름(full name)은 패키지명을 포함한 것이기 때문
- 예시) String클래스의 FQCN →
java.lang.String - 하나의 소스파일은 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용함
- 예시)
package java.lang; - 패키지를 선언하지 않으면
이름 없는 패키지에 속하게 됨 - java 언어 자체의 패키지는
java.혹은javax.로 시작함 - 패키지명은 대소문자 모두 허용하지만, 클래스명과 쉽게 구분하기 위해 소문자로 하는 것을 원칙으로 함
- 일반적으로 회사들은 패키지 이름 시작하기 위해 반전된 도메인 이름을 사용함
- 이때, 도메인 이름이 유효한 패키지 이름이 아니라면 언더바(
_)를 사용하는 게 관례임 - 예시)
도메인 이름 | 패키지 이름 |
example.com | com.example |
hyphenated-name.example.org | org.example.hyphenated_name |
example.int | int_.example |
123name.example.com | com.example._123name |
- 참고
2. import 키워드
- 정의) 다른 패키지의 클래스 사용할 때 사용
- 특징)
- 컴파일러가
import문을 통해 소스파일에 사용된 클래스들의 패키지 알아내고 패키지명을 클래스 이름 앞에 붙여줌 package문과클래스 선언사이에 위치함-
import 패키지명.클래스명; -
import 패키지명.*; - 패키지에 속하는 모든 클래스 import
- 하위 패키지의 클래스는 포함x
import문vsstatic import문import문→ 클래스의 패키지명 생략 가능static import문→ static 멤버변수/함수의 클래스명 생략 가능import static 패키지명.클래스명.멤버변수/함수명;import static 패키지명.클래스명.*;- 예시) QueryDSL 사용 시 QClass import할 때
import문사용 시static import문사용 시import java.lang.*;는 모든 소스파일에 묵시적으로 선언되어 있음

다른 방법
- 참고
3. 클래스패스
- 정의) 컴파일러(javac.exe)나 JVM 등이 클래스의 위치를 찾는데 사용되는 경로
- 특징)
- ‘;’ 구분자로 여러 개 경로 지정 가능
- 방식)
- CLASSPATH 환경변수 사용
- 컴퓨터 시스템 변수 설정을 통해 지정해서 사용 가능
- 이 방식으로 클래스패스를 따로 지정해줄 땐 더 이상 현재 디렉토리가 자동으로 클래스패스로 지정되지 않기 때문에 별도로 추가해줘야 함.
- 실행 시에
-classpath(-cp) 옵션 사용 java -classpath C:\Java\hi com.example.test와 같이 사용 가능
- 참고
4. 접근지시자
- 정의) 멤버 또는 클래스에 사용해, 외부에서 이들에 접근하지 못하도록 제한
- 특징)
- 사용 범위
- 사용 대상
제어자 | 같은 클래스 | 같은 패키지 | 자손 클래스 | 전체 |
public | o | o | o | o |
protected | o | o | o | x |
(default) | o | o | x | x |
private | o | x | x | x |
대상 | 사용 가능한 접근 제어자 |
클래스 | public, (default) |
메서드, 멤버변수 | public, protected, (default), private |
지역변수 | x |
- 참고
- 자바의 정석 (남궁성 지음)

![[백기선 자바] 패키지](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F301eb74c-edaf-492f-9dca-9be8a3bbf75e%2F%25EC%25BA%25A1%25EC%25B2%2598.jpg?table=block&id=c1ab6627-4bff-421e-b542-a38a3cd53ae2&cache=v2)
