패키지(package)
서로 관련된 클래스와 인터페이스의 묶음
- 클래스의 실제 이름은 패키지명을 포함(String 클래스의 실제 이름은 java.lang.String)
- 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉터리이다.
- 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다.
- 모든 클래스는 반드시 하나의 패키지에 속해야 한다.
- 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다.
- 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉터리이다.
패키지의 선언
package 패키지명;
패키지명은 대소문자를 모두 허용하지만, 클래스명과 쉽게 구분하기 위해서 소문자로 하는 것을 원칙으로 한다.
패키지가 선언되지 않은 클래스는 자동적으로 '이름 없는 패키지(unnamed package)'에 속한다.
클래스패스(classpath)
클래스패스는 클래스파일(.class)를 찾는 경로이다.
- 구분자는 ;이고 여러 개의 경로를 클래스패스에 지정할 수 있다.
- 클래스패스를 지정해 주지 않으면 기본적으로 현재 디렉터리(.)가 클래스패스로 지정되지만 클래스 패스를 지정하면 현재 폴더(.)도 함께 추가해주어야 한다.
import문
- 사용할 클래스가 속한 패키지를 지정하는 데 사용한다.
- import문을 사용하면 클래스를 사용할 때 패키지명을 생략할 수 있다.
import문의 선언
패키지문 다음, 클래스 선언문 이전에 위치해야 한다.
import문은 한 소스파일에 여러 번 선언할 수 있다.
import 패키지명.클래스명;
or
import 패키지명.*;
*은 해당 패키지에 속한 모든 클래스명을 나타낸다. import문은 컴파일 시에 처리되므로 이 둘은 실행 시 성능상의 차이는 없다.
import문에서 클래스의 이름 대신 *을 사용하는 것이 하위 패키지의 클래스까지 포함하는 것은 아니다.
import java.util.*;
import java.text.*;
위 두 문장 대신 아래와 같이 할 수 없다.
import java.*;
System이나 String과 같은 java.lang 패키지의 클래스들은 매우 빈번히 사용되는 중요한 클래스들이 속한 패키지이기 때문에 모든 소스파일에 묵시적으로 아래와 같은 import;문인 선언되어 있다.
import java.lang.*;
static import문
- static멤버를 호출할 때 클래스 이름을 생략할 수 있다.
- 특정 클래스의 static 멤버를 자주 사용할 때 편리하다.
import static java.lang.Integer.*; // Integer클래스의 모든 static메서드
import static java.lang.Math.random; // Math.random()만
import static java.lang.System.out; // System.ourt을 out만으로 참조가능
System.out.println(Math.random()); -> out.println(random());
'JAVA' 카테고리의 다른 글
[OOP] 다형성(polymorphism) (0) | 2023.03.08 |
---|---|
[OOP] 제어자(modifier) (0) | 2023.03.07 |
[OOP] 오버라이딩(overriding) (0) | 2023.03.06 |
[OOP] 상속(inheritance) (0) | 2023.03.06 |
[OOP] 변수의 초기화 (0) | 2023.03.04 |