[Java] Package 와 Import

jinnyjinnyjinjin·2020년 3월 28일
0
post-thumbnail

Package

패키지란 클래스의 묶음이다.

서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 같은 이름의 클래스일지라도 서로 다름 패키지에 존재하는 것이 가능하다.

지금까지 단순히 클래스 이름으로 클래스를 구분 했지만 클래스의 진짜 이름은 패키지명.클래스명 이다.

클래스가 물리적으로 하나의 클래스파일(.class) 인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다.

- 하나의 소스파일에는 첫 번째 문장으로 단 한번의 패키지 선언만을 허용한다.
- 모든 클래스는 반드시 하나의 패키지에 속해야 한다.
- 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다.
- 패키지는 물리적으로 클래스파일(.class)을 포함하는 하나의 디렉토리이다.

Package 의 선언

package 패키지명;

모든 클래스는 하나의 패키지에 속해야 한다고 했는데, 그렇지 않고 패키지 없이 클래스를 생성할 수 있는 이유는 자바에서 기본적으로 제공하는 이름없는 패키지(unnamed package) 때문이다.

소스파일에 자신이 속할 패키지를 지정하지 않은 패키지에서는 자동으로 '이름 없는 패키지' 에 속하게 된다. 하지만 큰 프로젝트를 진행 할 때에는 미리 패키지를 구성하는 것이 좋다.

Import 문

소스코드를 작성할 때, 다른 패키지 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다. 코드 작성 전에 import 문으로 사용하고자 하는 클래스의 패키지명을 미리 명시해주면 소스코드에서 사용되는 패키지명은 생략할 수 있다.

import 패키지명.클래스명;
            or
import 패키지명.*; // '*' -> 패키지에 속한 모든 클래스를 참조. 성능차이 없음.

잘못된 선언

import java.util.*;

// 잘못된 선언
import java.*;

import 문에서 클래스의 이름 대신 * 를 사용하는 것이 하위 패키지의 클래스까지 포함하는 것은 아니다.

static impot 문

static import 문을 사용하면 static 멤버를 호출할 때 클래스 이름을 생략할 수 있다.

import static java.lang.Integer.*;
import static java.lang.System.*; // System.out 을 out 만으로 참조 가능

출처: 자바의 정석

0개의 댓글