자바의 패키지에 대해 학습하세요.
소프트웨어에서 구조를 단순화하기 위해서는 서로 관련성이 높은 클래스 집합을 논리적인 단위로 통합해야 한다. 이처럼 상공에서 바라본 소프트웨어의 전체적인 구조를 표현하기 위해 관련된 클래스 집합을 하나의 논리적인 단위로 묶는 구성 요소를 패키지 또는 모듈이라고 한다
출저: 객체지향의 사실과 오해
com.mydomain.service
java.lang
java.util
java.io
등unnamed package
로 자동 분류String
-> java.lang.String
Member
-> example.Member
package 패키지명;
com.mydomain.uesrs.User user = new com.mydomain.uesrs.User();
import com.mydomain.users.User;
...
User user = new User();
import
키워드를 사용하면 패키지명을 생략할 수 있다import
키워드를 통해 소스파일에서 사용할 다른 패키지 정보 컴파일러에 전달패키지명.*
표기로 해당 패키지에 속한 모든 클래스 사용 가능import org.assertj.core.api.Assertions;
...
Assertion.assertThat(actual).isEqualTo(expected)
import static org.assertj.core.api.Assertions.*;
...
assertThat(actual).isEqualTo(expected)
static import
를 사용해 해당 클래스의 static
멤버 클래스명 없이 호출 가능환경변수
시스템 속성 > 고급 > 환경변수
에서 추가할 수 있다환경변수 CLASSPATH 등록
JAVA_HOME=설치한 jdk 경로
CLASSPATH=%JAVA_HOME%\lib;.
자동 클래스패스 설정
File > Project Structure > Project Settings > Modules
에서 확인 가능java [options]
java
java -help
로 확인 -cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
--class-path <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
javac [option]
javac
javac -help
로 확인 --class-path <path>, -classpath <path>, -cp <path>
Specify where to find user class files and annotation processors
-cp \
.
상위 디렉토리 나타내는 ..
;
, 리눅스 계열 :
접근 제어자 | 클래스 내부 | 동일 패키지 | 상속받은 클래스 | 이외의 영역(전체) |
---|---|---|---|---|
private | O | X | X | X |
package-private (default) | O | O | X | X |
protected | O | O | O | X |
public | O | O | O | O |
public
, package-private
만 가능public
: 공개 API가 되며, 클라이언트를 위해 하위 호환 관리 필요package-private
: 해당 패키지 내에서만 사용하므로, 클라이언트와 관계 없이 얼마든 작업 가능public
이 디폴트