java

자바 패키지란?

컴공 윤서혜 학습일기 2019. 4. 22. 15:08

자바는 서로 관련된 클래스들을 하나로 묶을 수 있는 방법을 제공하는데, 그것이 바로 패키지(Package)이다. 패키지를 사용하여서 관련된 클래스들을 묶을 수 있고, 동일한 클래스 이름을 충돌 없이 여러 개의 패키지에서 쓸 수 있다.

 

 

왜 패키지 구조를 사용하는가?

클래스 이름이 겹치더라도 패키지가 다르면 중복 문제가 발생하지 않기 때문이다. 패키지를 사용하는 가장 중요한 이유는 바로 "이름공간(name space)" 때문이다.

 

  • 서로 관련된 클래스들을 묶어서 조직화 할 수 있다. 라이브러리가 하나로 되어 있는 것보다 필요한 클래스를 쉽게 찾을 수 있다.
  • 패키지마다 이름 공간을 따로 갖기 때문에 동일한 클래스 이름이라 하더라도 패키지가 다르면 사용할 수 있다.
  • 패키지별로 접근에 제야을 가할 수 있다.

 

패키지 선언

패키지를 생성하는 방법을 알아보자. 예를들어 Circle.java 파일의 Circle 클래스를 graphics 패키지에 넣고 싶으면 다음과 같이 한다.

package graphics;
public class Circle{
....}

이렇게 되어서 Circle 클래스의 정식 이름은 graphics.Circle이 된다. 패키지 선언문은 항상 소스파일의 첫 번째 문장이어야 한다. 만약 소스파일을 생성하였는데 패키지 문을 사용하지 않는 경우에는 어떻게 되는가? 이런 경우에는 디폴트 패키지(default package)에 속하게 된다. 디폴트 패키지는 이름이 없는 패키지로서 임시적인 프로그램을 작성할 경우에 사용하는 패키지이다.

 

 

패키지 사용

패키지 안에 들어있는 클래스나 인터페이스를 사용하려면 어떻게 해야 하는가?

 

-클래스 이름에 패키지를 붙여서 참조하기

만약 동일한 패키지 안에 클래스이면 이런식으로 참조할 수 있다. 

graphics.Circle obj = new graphics.Circle();

- 패키지를 포함한다.

외부의 패키지를 포함시키려면 import문장을 사용한다. import 문장은 package문장 다음에 위치하여야 한다. import문의 문법은 다음과 같다. 별표"*"는 패키지 안에 모든 클래스를 포함한다는 의미이다. 특정한 클래스만을 포함할 수도 있다.

import graphics.*;

 

 

클래스의 이름이 중복되는 경우

만약 똑같은 이름의 클래스를 가지는 패키지가 동시에 포함 될 때는, 모호성을 제거하기 위하여 정식 이름을 사용하여야 한다. 즉 예를 들어 2개의 패키지 lib1, lib2가 존재하고 각각이 Circle이라는 똑같은 이름의 클래스를 가지고 있고 두 개의 패키지가 현재의 프로그램에 동시에 포함되면 Circle의 이름을 다음처럼 정식 이름으로 써야 한다.

import lib1;
import lib2;
....
lib1.Circle obj1 = new lib1.Circle();
lib2.Circle obj2 = new lib2.Circle();

'java' 카테고리의 다른 글

Wrapper 클래스  (0) 2019.04.22
Object 클래스  (0) 2019.04.22
자바 오버라이딩  (0) 2019.04.11
(자바)상속 cf.호출  (2) 2019.04.11
자바 내장 클래스  (0) 2019.04.11