Backend/JAVA

[JAVA] 패키지와 클래스 (같은 이름의 클래스 import)

dddzr 2023. 7. 25. 16:40

패키지(package)

자바는 클래스의 구분을 위해 패키지를 사용합니다.

패키지는 클래스들을 논리적으로 그룹화하여 충돌을 방지하고, 클래스의 이름을 명확하게 지정하는 데 도움을 줍니다.

 

FQCN (Fully Qualified Class Name)

클래스의 정규화된 이름은 패키지를 포함하여 클래스를 명시적으로 지정하는 방법입니다. 이를 사용하면 라이브러리명이 겹칠 때 충돌을 피하고 원하는 클래스를 명확히 지정할 수 있습니다. 

만약 같은 이름의 클래스가 다른 패키지에 있을 때, import 문을 사용하여 해당 클래스를 구분하면 됩니다. 자바에서 import 문은 다음과 같이 사용됩니다:

// 패키지가 com.example.package1인 MyClass 클래스를 import
import com.example.package1.MyClass;

// 패키지가 com.example.package2인 MyClass 클래스를 import
import com.example.package2.MyClass;

public class Main {
    public static void main(String[] args) {
        // 각각 다른 패키지에 있는 MyClass를 사용
        com.example.package1.MyClass obj1 = new com.example.package1.MyClass();
        com.example.package2.MyClass obj2 = new com.example.package2.MyClass();

        // import 문을 사용하여 MyClass를 구분하여 사용
        MyClass obj3 = new MyClass(); // com.example.package1.MyClass
        MyClass obj4 = new MyClass(); // com.example.package2.MyClass
    }
}

 

왜 클래스의 정규화된 이름(FQCN)을 사용해야 하는가?

충돌을 피하기 위해: 서로 다른 라이브러리들이 동일한 클래스 이름을 사용하는 경우가 있습니다. 이때 클래스의 정규화된 이름을 사용하면 충돌을 피할 수 있습니다.

코드 가독성: 패키지 이름을 포함한 정규화된 이름은 코드의 가독성을 향상시킵니다. 클래스가 속한 패키지를 알 수 있기 때문에 코드를 더 명확하게 이해할 수 있습니다.

유지보수: 코드가 복잡해지고 프로젝트가 커질수록 클래스의 충돌 가능성이 높아집니다. 정규화된 이름을 사용하면 유지보수에 도움이 됩니다.