package [Package명].(중략).[Package명]
자바의 Package
는 Class
의 집합이다. Package
는 파일 시스템의 폴더 형태로 존재하며, Class
를 유일하게 만드는 식별자 역할을 한다. Package
는 계층적 구조로 이루어져있으며, 동일한 이름의 Class
라도 다른 Package
에 속해있다면 다른 Class
로 인식한다.
Package
의 기본적인 규칙들은 다음과 같다.
Package
선언만 가능하다.Class
는 반드시 하나의 Package
에 속한다.Package
는 .
을 구분자로 하여 계층 구조로 작성한다.Package
내 Class
를 호출하는 방식은 크게 두 가지로 나뉜다.
java.util.Date today = new java.util.Date();
java.util.Date tomorrow = new java.util.Date();
import java.util.*
Date today = new Date();
Date tomorrow = new Date();
사용하고자 하는 Class
또는 Interface
가 다른 Package
에 소속되어 있는 경우, import
를 통해 해당 객체의 위치를 컴파일러에게 명시하는 것
*
을 사용해, 동일한 Package
에 소속된 모든 Class
를 한번에 부를 수 있다. 하지만 상위 Package
를 import
해도 모든 하위 Package
가 import
되지는 않기 때문에, 컴파일 에러가 발생할 수 있다.
💡 Class
를 찾기 위한 경로.
JVM이 프로그램을 실행할 때, Class
파일을 찾는데 기준이 되는 파일 경로를 의미한다. 소스 코드(.java
)를 컴파일하면, 소스코드는 바이트코드(.class
)로 변경된다. JVM이 바이트코드를 실행하기 위해서는, 무엇보다 해당 파일을 찾을 수 있어야 한다.
classpath
는 바이트코드의 경로를 지정하며, JVM은 classpath
에 지정된 모든 경로를 검색해 특정 Class
에 대한 코드가 포함된 바이트코드를 찾는다.
💡 Window 기준으로 작성하였습니다.
시스템 환경 변수
설정을 통해 지정할 수 있다. JVM이 호출되면, CLASSPATH
가 지정하는 디렉토리에 있는 클래스들이 먼저 JVM에 로딩된다. 따라서 CLASSPATH
환경 변수에는 필수적인 Class
가 위치한 경로를 지정해주어야 한다.
javac -classpath <경로>
💡 Class
, Interface
, 객체의 멤버
의 접근을 제어하기 위해 사용