기능별 클래스 정리

JavaBeginner
지금 연습하기

소개

이 랩에서는 패키지를 사용하여 클래스를 기능별로 구성하는 방법을 배우게 됩니다.

패키지

지금까지 우리는 많은 클래스를 작성했습니다. 큰 프로젝트의 경우 수백 개의 클래스가 있을 수 있으며, 이렇게 많은 파일과 클래스를 정리하는 것은 쉽지 않습니다. 서로 다른 프로그래머가 서로 다른 클래스를 작성할 수 있으며, 때로는 동일한 이름을 가진 클래스가 프로젝트에 나타나는 경우도 있습니다. 이러한 문제를 어떻게 피할 수 있을까요? 패키지를 사용할 수 있습니다. Java 라이브러리는 java.lang 을 포함하여 패키지로 나뉘며, 지금까지 사용한 대부분의 클래스를 포함하고 있습니다. 패키지는 접근 보호 및 네임스페이스 (name space) 관리를 제공하는 관련 유형의 그룹입니다. 여기서 유형은 클래스, 인터페이스 (interfaces), 열거형 (enumerations) 및 어노테이션 유형 (annotation types) 을 의미합니다.

패키지를 생성하려면 패키지 이름을 선택하고, 해당 패키지에 포함하려는 유형이 있는 모든 소스 파일의 맨 위에 해당 이름의 package 문을 넣습니다. package 문은 소스 파일의 첫 번째 줄이어야 합니다. 각 소스 파일에는 하나의 package 문만 있을 수 있습니다.

패키지 외부에서 public 패키지 멤버를 사용하려면 다음 중 하나를 수행해야 합니다.

  • 멤버를 정규화된 이름 (fully qualified name) 으로 참조합니다.
  • 패키지 멤버를 import 합니다.
  • 멤버의 전체 패키지를 import 합니다.

예시

다음 코드를 /home/labex/project/com/example/demo/packageDemo.java 파일에 작성합니다.

package com.example.demo;  // create a new package

public class packageDemo{
    public static void test(){
        System.out.println("This is a package test.");
    }
}

다음 코드를 /home/labex/project/packageTest.java 파일에 작성합니다.

import com.example.demo.packageDemo;
class packageTest{
    public static void main(String[] args){
        packageDemo.test();
    }
}

출력:

다음 명령을 사용하여 packageTest.java 파일을 실행합니다.

javac /home/labex/project/packageTest.java
java packageTest

출력을 확인합니다.

This is a package test.

요약

패키지는 논리적 관계가 있거나 특정 기능을 수행하는 클래스를 수집하는 방법을 제공하며, 패키지를 사용하면 이름 충돌을 피할 수 있습니다. 코드를 패키지로 묶어 다른 사람에게 제공하거나 인터넷에서 다른 사람의 패키지를 가져올 수 있습니다. 이는 코딩의 편의성을 높여줍니다.