사전 정의된 클래스 이름을 클래스 이름으로 사용하기
Java에서는 Number, String 등과 같이 JDK 표준 라이브러리에 이미 존재하는 클래스 이름을 사용자가 직접 정의하는 클래스 이름으로 그대로 사용할 수 있습니다. 다음 예제를 통해 확인해 보겠습니다.
예제
public class Number{
public static void main (String[] args){
System.out.println("Pre-defined class name can be used as a class name");
}
}출력 결과
Pre-defined class name can be used as a class name
위 코드에서 Number 클래스는 프로그램 실행 시 메시지를 출력하는 main 함수를 포함하고 있으며, 이 main 함수는 문자열 배열을 인자로 받습니다.
컴파일러는 사용자가 정의한 클래스를 우선적으로 인식하기 때문에, 표준 라이브러리에 이미 존재하는 클래스와 동일한 이름으로 새 클래스를 선언해도 컴파일 오류가 발생하지 않습니다. 다만 이런 방식은 코드의 가독성을 떨어뜨리고 혼란을 줄 수 있으므로 실무에서는 피하는 것이 좋습니다.
사전 정의된 클래스 이름을 변수 이름으로 사용하기
마찬가지로 사전 정의된 클래스 이름은 변수 이름으로도 활용할 수 있습니다. 다음 예제를 살펴보겠습니다.
예제
public class String{
public static void main (java.lang.String[] args){
System.out.println("Pre-defined class name can be used as a variable");
}
}출력 결과
Pre-defined class name can be used as a variable
String 클래스 역시 콘솔에 관련 메시지를 출력하는 main 함수를 가지고 있습니다. 여기서 주목해야 할 부분은 main 함수의 매개변수입니다. 일반적인 방식처럼 String[] args로 작성하지 않고, 완전한 패키지 경로인 java.lang.String[] args로 명시적으로 작성했습니다.
그 이유는 현재 클래스의 이름 자체가 String이기 때문입니다. 만약 단순히 String[] args라고 작성하면 컴파일러는 이를 java.lang 패키지의 String이 아닌 사용자가 정의한 String 클래스로 해석하여 오류가 발생합니다. 따라서 이름 충돌을 피하려면 java.lang.String과 같은 전체 한정 이름(fully qualified name)을 사용해야 합니다.