전체 보기

[백기선 자바] 패키지

작성일자
2023/07/13
태그
SUB PAGE
프로젝트
백기선 자바
책 종류
1 more property

[자바 라이브 스터디] 7주차 - 패키지

목표) 자바의 패키지에 대해 학습하세요.
7
issues

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문 vs static import문
import문 → 클래스의 패키지명 생략 가능
static import문 → static 멤버변수/함수의 클래스명 생략 가능
import static 패키지명.클래스명.멤버변수/함수명;
import static 패키지명.클래스명.*;
예시) QueryDSL 사용 시 QClass import할 때
import문 사용 시
import com.sptp.backend.member.repository.QMember; ... @Override public List<Member> findPreferredArtist(Long memberId) { return queryFactory .select(QMember.member) .from(QMember.member, preferredArtist) .where(QMember.member.id.eq(preferredArtist.artist.id), preferredArtist.member.id.eq(memberId)) .fetch(); }
Java
복사
다른 방법
static import문 사용 시
import static com.sptp.backend.member.repository.QMember.*; ... @Override public List<Member> findPreferredArtist(Long memberId) { return queryFactory .select(member) .from(member, memberPreferredArtist) .where(member.id.eq(memberPreferredArtist.artist.id), memberPreferredArtist.member.id.eq(memberId)) .fetch(); }
Java
복사
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
참고
자바의 정석 (남궁성 지음)