java package-qualified class name

2025. 1. 16. 18:11High Level Programming Language

Package-qualified class name자바 클래스의 전체 이름(fully qualified name)을 의미합니다. 이는 클래스 이름 앞에 해당 클래스가 속한 패키지 이름을 포함한 이름을 말합니다.

구조

<패키지 이름>.<클래스 이름>

예제

package com.example.demo;

public class HelloWorld {
    public void sayHello() {
        System.out.println("Hello, World!");
    }
}

위 클래스의 package-qualified class name은 다음과 같습니다:

com.example.demo.HelloWorld

특징

  1. 고유성:

    • 동일한 이름의 클래스가 여러 패키지에 존재할 수 있습니다.
    • 예: java.util.Datejava.sql.Date는 서로 다른 패키지에 속한 클래스입니다.
      • java.util.Date: 유틸리티 클래스.
      • java.sql.Date: 데이터베이스에서 사용하는 클래스.
  2. 패키지를 명시하지 않으면 기본 패키지 사용:

    • 패키지를 선언하지 않은 경우, 기본 패키지(default package)로 간주됩니다. 그러나 이는 권장되지 않습니다.

사용 예시

1. 클래스 임포트 없이 직접 사용

public class Main {
    public static void main(String[] args) {
        com.example.demo.HelloWorld hello = new com.example.demo.HelloWorld();
        hello.sayHello();
    }
}
  • 클래스의 패키지 이름을 명시적으로 지정해 사용.

2. 클래스 임포트 후 사용

import com.example.demo.HelloWorld;

public class Main {
    public static void main(String[] args) {
        HelloWorld hello = new HelloWorld();
        hello.sayHello();
    }
}
  • import 키워드를 사용해 패키지를 명시적으로 선언한 후 클래스 이름만 사용.

패키지-한정 클래스 이름의 용도

  1. 클래스의 고유 식별:

    • 대규모 프로젝트에서는 동일한 이름의 클래스가 다른 패키지에 있을 수 있으므로 충돌을 방지합니다.
    • 예: com.companyA.project.ClassAcom.companyB.project.ClassA.
  2. 클래스 간 충돌 해결:

    • 동일한 이름의 클래스를 두 개 이상 사용할 때, 패키지-한정 이름을 사용해 구분합니다.

      import java.util.Date;
      import java.sql.Date;
      
      public class Main {
          public static void main(String[] args) {
              Date utilDate = new java.util.Date();  // java.util.Date
              Date sqlDate = new java.sql.Date(System.currentTimeMillis());  // java.sql.Date
          }
      }
  3. 클래스 참조의 명확성 제공:

    • 패키지-한정 이름을 사용하면 해당 클래스가 어떤 패키지에 속하는지 명확히 알 수 있습니다.

패키지-한정 이름의 이점

  • 코드 가독성 증가: 클래스의 출처를 쉽게 파악 가능.
  • 모듈화 지원: 서로 다른 패키지로 나누어 코드를 조직화할 수 있음.
  • 충돌 방지: 동일한 이름의 클래스 간 명확한 구분 가능.

관련 용어

  • 패키지(package):
    • 클래스와 인터페이스를 논리적으로 그룹화하여 조직화하는 방법.
  • Default package:
    • package 선언이 없는 경우 사용되는 기본 패키지. 그러나 실무에서는 피하는 것이 좋음.
  • Fully qualified name:
    • package-qualified class name과 같은 뜻으로, 클래스 이름과 패키지 이름을 모두 포함한 이름.