본문 바로가기
JAVA BASE/OOP(객체지향 프로그래밍)

08. [자바] package와 import

by staticClass 2020. 12. 14.

패키지(package)

패키지란? 클래스의 묶음이다. 클래스 또는 인터페이스를 포함시킬 수 있고
관련 클래스들의 그룹을 만들어 클래스 관리가 편해진다.
같은 이름의 클래스가 있어도 패키지가 다르면 상관이 없어지기 때문에
서로 다른 개발자가 개발한 클래스의 이름이 충돌하는 것을 피할 수 있다.

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

import문

코드를 작성할 때 다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다.

java.util.Date date = new java.util.Date();    // import를 사용 하지 않았을때 Date 클래스를 쓰려면..
--------------------------------------------------------------------------------------------------
import java.util.Date;
Date date = new Date();    // import 사용시..

위의 코드를 비교해보면 import의 기능을 쉽게 알수 있다.
컴파일 시 컴파일러가 import문을 통해 소스 파일에 사용된 클래스들의 패키지를 알아낸 다음
모든 클래스이름 앞에 패키지명을 붙여준다.

import문의 선언

① package문
② import문
③ 클래스 선언

import문은 패키지문과 클래스 선언 사이에 위치해야 하고 한 파일에 여러 번 import 할 수 있다.

import 패키지명.클래스명;
import 패키지명.*;

같은 패키지에 여러 개의 클래스가 사용될 때는 import문을 여러번 사용하는 대신
패키지명.*을 사용하면 된다. (*)의 의미는 모든 것이라고 생각하면 편하다.
패키지:패키지 / (.):안의 / (*):모든것을 / import:수입하겠다.

import java.util.Calendar;
import java.util.Date;
import java.util.ArrayList;

import문을 여러번 사용 하는 대신...

import java.util.*;

같은 패키지 내의 클래스들은 import문을 지정하지 않고도 사용 가능하다.
import문은 프로그램의 성능에 전혀 영향을 미치지 않는다, 컴파일 시간이 아주 조금 더 걸릴 뿐이다.

static import문

import static java.lang.Integer.*;     // Integer클래스의 모든 static 메서드
import static java.lang.Math.random; // Math.random()만. 괄호 안붙임.
import static java.lang.System.out;  // System.out을 out만으로 참조가능

만일 위와 같이 static import를 선언하였다면, 아래의 왼쪽 코드를 오른쪽 코드와 같이 간략히 할 수 있다.

System.out.println(Math.random());    ↔   out.println(random());

 


흠 기본적이면서도 꼭 알아야 하는 패키지와 import
처음 자바를 공부할때는 패키지, import가 뭔지 몰라서
어려웠었는데 다시 보니 반갑다🤣
static import.. 는.. 신기하다 처음 봤다 👍
사용하는 개발자도 아직 본적이 없는거 같은데
내가 쓸지는 모르겠지만 다른분이 사용한걸 봐도 당황은 안하겠지🤔

댓글