패키지(package)
o 패키지란 클래스의 묶음으로 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며 서로 관련된 클래스끼리 그룹단위로 묶어 효율적으로 관리할 수 있다.
o 클래스의 실제 이름은 java.lang.String처럼 패키지 명을 포함하기에 같은 이름의 클래스라도 서로 다른 패키지에 속하면 패키지 명으로 구별이 가능하다.
o 클래스가 하나의 물리적인 파일(.class)인 것처럼 패키지는 물리적으로 하나의 디렉토리(폴더)이다.
o 클래스의 패키지 선언 시 다음과 같은 규칙이 있다.
1. 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다.
2. 모든 클래스는 반드시 하나의 패키지에 속해야 한다.
3. 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다.
4. 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다.
패키지의 선언
o 패키지는 [package 패키지명;] 형식으로 선언한다. 패키지 선언문은 소스 파일의 주석과 공백을 제외한 맨 첫 번째 문장이어야 하며 소스파일에 한 번만 선언될 수 있다.
o 패키지명은 대소문자 모두 가능하지만 클래스 파일과 구분하기 쉽게 하기 위해 소문자로 하는 것을 원칙으로 한다.
o 모든 클래스는 반드시 하나의 패키지에 포함되어야 한다. 소스 파일에 자신이 속할 패키지를 지정하지 않은 클래스는 자동적으로 ‘이름없는 패키지(nunamed package)’에 속하게 된다.
import 문
o 다른 패키지의 클래스를 사용할 경우 패키지 명이 포함된 클래스 이름을 사용해야 하지만 그러면 너무 불편하다. 사전에 import문으로 사용할 패키지를 미리 명시해주면 클래스이름에서 패키지 명을 생략할 수 있다.
o impot의 역할은 컴파일 시 컴파일러에게 패키지에 대한 정보를 제공하며 컴파일러는 이를 통해 클래스들의 패키지를 알아낸 다음 모든 클래스 앞에 패키지 명을 붙인다.
import 문의 선언
o 일반적인 소스파일(.java)의 구성은 다음의 순서로 되어있다.
1. package 문
2. import 문
3. 클래스 선언
o Import는 [import 패키지명.클래스명;] 또는 [import 패키지명.*]로 선언할 수 있다.
o *을 사용할 경우 지정된 패키지에 속하는 모든 클래스를 패키지명 없이 사용할 수 있으며 컴파일러는 해당 패키지에서 일치하는 클래스 이름을 찾는 작업이 생기지만 프로그램 실행 시 성능상의 차이는 전혀 없다.
o 그러나 import문에서 *사용하는 것이 현재 작성된 경로의 패키지만 포함되는 것이지 하위 패키지의 클래스까지 포함하는 것은 아니다.
static import문
o import문은 클래스 사용 시 패키지 명을 생략할 수 있었다면 static import문은 static멤버 호출 시 클래스명을 생략할 수 있다.
package JavaProject;
import static java.lang.Math.random;
import static java.lang.System.out;
public class Test {
public static void main(String[] args) {
// System.out.println(Math.random());
out.println(random()); //System, Math를 생략하여 사용가능
}
}
|
'언어 > 자바의 정석' 카테고리의 다른 글
[자바의 정석] Chapter 7 객체 지향 프로그래밍II (5) - 다형성(polymorphism) (0) | 2021.02.16 |
---|---|
[자바의 정석] Chapter 7 객체 지향 프로그래밍II (4) - 제어자(modifier) (0) | 2021.02.16 |
[자바의 정석] Chapter 7 객체 지향 프로그래밍II(2) - 오버라이딩(overriding) (0) | 2021.02.16 |
[자바의 정석] Chapter 7 객체 지향 프로그래밍II(1) - 상속 (0) | 2021.02.16 |
[자바의 정석] Chapter 6 객체 지향 프로그래밍 요약(6) - 변수의 초기화 (0) | 2021.02.04 |