[JAVA] 패키지 (Package) (자바 독학하기9)
패키지는 클래스를 묶는 수단이다.
자바에서 제공되는 클래스도 무수히 많이 있고 이 많은 클래스의 이름만 보면 사용 목적을 알기 힘들다.
이를 구분하기 위해 패키지를 통해 클래스들을 모아 관리를 용이하게 만든다.
또한 다른 곳에서 제공 받은 클래스의 이름이 기존의 이름과 같은 경우 패키지를 통해서 충돌 문제를 해결할 수 있다.
패키지를 선언하게 되면 클래스의 이름이 같더라도 인스턴스 생성시 사용하는 이름이 다르고 클래스 파일의 저장 위치가 다르다.
패키지의 네이밍 룰은 다음과 같다.
ㄱ. 클래스의 이름과 구분이 되도록 패키지의 이름은 모두 소문자로 구성한다.
ㄴ. 인터넷 도메인 이름의 역순으로 패키지 이름을 구성한다.
ㄷ. 패키지 이름의 끝에 클래스를 정의한 주체 또는 팀을 구분하는 이름을 추가한다.
이제 예를 통해 도메인이 lemon.com 의 yellow 팀에서 패키지를 만든다고 한다면
com.lemon.yellow
와 같이 패키지 이름을 정하면 된다.
이제 서로 다른 패키지에 속한 동일한 이름의 A 라는 클래스의 인스턴스 생성은
com.lemon.yellow.A A1 = new com.lemon.yellow.A();
com.lemon.green.A A2 = new com.lemon.green.A();
과 같이 패키지의 이름으로 구분지어 질 수 있고 저장 위치도 패키지에 의해 나뉘어 진다.
위의 내용을 토대로 이클립스에서 패키지와 클래스를 구성하였다.
다음과 같이 패키지와 클래스를 만들면 클래스 맨 상단에 패키지의 내용이 나타나게 되어있다.
또한 이클립스에서 패키지 명의 . 을 인식하여 하위 폴더로 구성을 하게 된다.
이제 이 2개의 동일한 이름의 클래스의 인스턴스를 생성하여 호출하면 다음과 같다.
이와 같이 각각의 클래스에서 인스턴스를 생성하여 호출됨을 볼 수 있다.
이 패키지를 인스턴스 생성시에 적는 번거로운 상황을 피하기 위해 import 를 이용하면 되는데
사용 방법은 클래스 선언 전에 import 를 선언하는 것이다.
다음과 같이 com.lemon.yellow 의 클래스 이름을 B 로 수정하여 import 를 사용하면
패키지명을 계속 명시 하지 않고 생략하여 사용 가능하다.
위 예와 같이 클래스 명을 수정한 점을 보면 알 수 있듯이 동일한 명의 클래스 명으로 import 를 진행할 수는 없다.
이와 같은 import 는 이름 충돌이 발생할 여지가 있고 의도하지 않은 인스턴스의 생성이 발생할 수 있으므로 사용을 자제 하여야 한다.