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();

패키지가 있는 객체 선언 및 생성 - import 키워드

클래스를 사용할 때 매번 패키지명을 같이 사용하는 것은 상당히 불편하다. 자바에서는 이런한 문제점을 해결하기 위해서 import 키워드를 사용한다.

형식은 import로 패키지가 있는 클래스를 명시하고 클래스를 사용하는 곳에서는 단순히 클래스명만 기술하면 된다.

import 패키지명[.패키지명[.패키지명]...].클래스명;

클래스명 객체변수명 = new 클래스명();

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

import com.devkuma.tutorial.HelloWorld;

HelloWorld helloWorld = new HelloWorld();

패키지 컴파일

준비중입니다.