Java 패키지(Package)

패키지 개요

클래스들을 분류하고 사용의 편리성을 제공하기 위해서 관련 클래스와 인터페이스들을 하나로 묶을 수가 있는데 이를 **패키지(package)**이라고 한다. 즉, 패키지는 비슷한 종류의 클래스나 인터페이스들을 하나의 집단으로 묶어 놓은 것을 말한다.

  • 클래스들을 하나로 묶어놓은 것이다.
  • 클래스 간의 이름 중복으로 발생하는 충돌을 막아준다.
  • 클래스를 기능별로 분류할 수 있어 필요한 클래스의 식별이 용이하다.

패키지는 이름 지정과 접근 제어성에 관한 기술이다. 패키지 내부에는 그 패키지의 외부에 있는 코드가 액세스할 수 없는 클래스를 생성할 수도 있다. 또한 같은 패키지의 다른 멤버들에게 액세스할 수 있는 클래스의 멤버를 구성할 수도 있다.

패키지의 이름은 도메인 이름의 역순으로 구성하는 것이 일반적이다. 수많은 개발자에 의해 자바 클래스들과 인터페이스들이 작성되고 이를 패키지로 분류되어 많은 사람들이 사용하고 있다. 패키지의 이름을 자유롭게 정하다 보면 같은 이름의 패키지가 중복 발생하여 혼란을 야기시킬 수 있다. 그래서 보통 어느 회사 및 단체에서 만든 패키지는 com.devkuma.tutorial 같은 식으로 작성해서 패키지의 이름 중복을 최대한 줄일 수 있다.

패키지 정의

패키지는 소스의 최상단에 위치하게 된다. 관례적으로 패키지명은 모두 소문자로 작성되며 경로 및 단위는 (.)으로 구분된다.

package 패키지명[.패키지명[.패키지명]...];

class 클래스명 { ...
package com.devkuma.tutorial;

class HelloWorld { ...

패키지가 있는 객체 선언 및 생성

패키지가 있는 객체를 사용하기 위해서는 패키지명을 기입해줘야 한다. 어느 패키지에 속해 있는 어떤 클래스인지를 모두 기입해야 명확해지기 때문이다.

그러기에 아래와 같은 형식으로 객체를 선언 및 생성이 가능하다.

패키지명[.패키지명[.패키지명]...].클래스명 객체변수명 = new 패키지명[.패키지명[.패키지명]...].클래스명();

아래 코드를 보면 HelloWorld 객체는 com.devkuma.tutorial에 속해 있기에 com.devkuma.tutorial.HelloWorld로 객체변수를 선언하고 com.devkuma.tutorial.HelloWorld 생성자를 호출하여 객체를 생성하였다.

com.devkuma.tutorial.HelloWorld helloWorld = new com.devkuma.tutorial.HelloWorld();