본문 바로가기

언어공부/Java

자바 패키지(Package), 패키지 선언, import문, static import문

자바 패키지, import에 대해서 알아보자.

패키지(Package)

패키지는 클래스 묶음을 뜻한다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 또한 같은 이름의 클래스라도 서로 다른 패키지에 존재하는 것이 가능하므로 자신만의 패키지 체계를 유지함으로써 이름이 충돌하는 것을 피할 수 있다.

 

실제로 클래스의 풀네임은 패키지명을 포함한 것이다. String클래스의 실제 이름은 java.lang.String이다. jav.lang패키지에 속한 String클래스 라는 의미이다. 그래서 같은 이름의 클래스일지라도 서로 다른 패키지에 속하면 패키지명으로 구별이 가능하다.

 

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

 

패키지는 "package 패키지명;"으로 선언할 수 있다. 모든 클래스는 반드시 하나의 패키지에 포함되어야 하는데, 그럼에도 불구하고 지금까지 소스파일을 작성할 때 패키지를 선언하지 않고도 아무런 문제가 없었던 이유는 자바에서 기본적으로 제공하는 이름없는 패키지 때문이다. 결국 패키지를 지정하지 않는 모든 클래스들은 같은 패키지에 속하는 셈이다.

 

이클립스에서는 아래와 같이 패키지를 생성할 수 있다.

 

자바프로젝트에서 오른쪽클릭 new-package로 생성할 수 있다.

 

name을 설정하고 Finish하면 된다.

 

자바프로젝트에서 오른쪽클릭 new-package를 누르고 Name을 설정해주고 Finish를 눌러주면 된다. 여기서 com.naver.model로 name을 설정해서 패키지를 만들어 주었다.

 

com.naver.model 패키지를 생성.

 

 

만약 com.naver.model 패키지를 생성하고, 해당 패키지에 속하는 클래스를 생성할 때,  com\naver\model 폴더경로에서 확인할 수 있다. 보통 도메인 역순으로 패키지명으로 하는데, 포괄적 이름이 상위 패키지로 가기 위해서인 이유가 있다. com이 포괄적으로 많이 쓰이기 때문에 상위 패키지로 하고, 그다음에 naver, daum등 하위패키지로 한다.

 


import문

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

 

외부 패키지 클래스를 읽어올 때 사용되며, 이클립스에서의 단축키는 "ctrl+shiff+o"이며, 자동으로 import문을 추가해준다. 자바 기본 패키지 경로는 java.lang이지만 해당 경로는 기본값으로 생략할 수 있다.

 

ex) java.util.Date import 전>> java.util.Date today = new java.util.Date();

java.util.Date import 후>> Date today = new Date();


static import문

static import문을 사용하면 static멤버를 호출할 때 클래스 이름을 생략할 수 있다. 특정 클래스의 static멤버를 자주 사용할 때 편리하며 코드가 간결해진다.

 

ex)

java.lang.System.*을 import했기 때문에 System.out.println(Math.random());을 out.println(random())으로 작성할 수 있다.

 


 

com.naver.model 패키지의 BoardVO 클래스를 작성했다. 보통 해당 클래스를 데이터 저장을 위한 빈클래스라고 한다. 멤버변수가 private로 되어있기 때문에 setter, getter로 값을 저장하고 리턴해준다.

 

 

다른 패키지에서 com.naver.model.BoardVO패키지를 import해주고 BoardVO클래스 객체를 생성해서 멤버변수를 초기화하고 출력하는 과정이다.