프로젝트를 하면서 자바 프로그램을 개발하다 보면 수십, 수백 개의 클래스를 작성하는 경우가 생긴다. 클래스가 많아질수록 관계가 복잡해져서 관리를 제대로 하지 않으면 관계가 엉켜 복잡하고 난해한 프로그램이 될 가능성이 있다. 자바에서는 이런 부분을 방지하기 위해 클래스를 체계적으로 관리하기 위한 패키지를 사용한다.
자바에서는 패키지를 만들어서 이 패키지에 분류에 맞게 클래스를 저장하고 관리하는데 이 시스템은 컴퓨터의 폴더 시스템과 유사하다. 패키지가 어떻게, 어떤 기능을 하는지 알아보자.
- 패키지는 파일 시스템의 폴더 기능을 한다.
- 패키지는 클래스의 일부분이다.
- 패키지는 클래스를 유일하게 만들어주는 식별자 역할을 한다.
- 예를 들어 삼성 패키지의 TV 클래스와 LG패키지의 TV 클래스를 비교해보면 두 패키지 모두 TV 클래스라는 동일한 클래스가 있지만 두 TV 클래스는 패키지명으로 서로 구분된다.
- 패키지 안에 있는 클래스 이름을 표기할 때는
패키지.클래스
와 같은 형식으로 표기한다.- 예를 들어 삼성 패키지의 TV 클래스는
삼성.TV
라고 표기한다.
- 예를 들어 삼성 패키지의 TV 클래스는
- 패키지안에 패키지가 있을 수 있다
- 회사 패키지 밑에 삼성 패키지가 있고 TV 클래스가 있다고 한다면 이는
회사.삼성.TV
와 같이 표기한다.
- 회사 패키지 밑에 삼성 패키지가 있고 TV 클래스가 있다고 한다면 이는
패키지 선언
컴파일러는 클래스에 포함되어 있는 패키지 선언을 보고 파일 시스템의 폴더로 자동 생성시킨다. 패키지 선언은 다음과 같이 한다,.
Main.java
package 패키지이름;
public class Main() {}
패키지 이름은 개발자가 임의로 정한다. 다만 이 세 가지 사항을 유의하자.
- 숫자로 시작하면 안된다.
- _ , $를 제외한 특수문자를 사용하면 안 된다.
- 패키지 이름을
java~~
이런 식으로 지으면 자바 표준 API에서 이러한 형식을 사용하므로 중복되기 때문에 안된다.
그리고 일반적으로 패키지 이름은 모두 소문자로 작성한다.
import문
같은 패키지에 속해 있는 클래스들은 서로 조건 없이 다른 클래스를 사용할 수 있다. 하지만 다른 패키지에 속해 있는 클래스를 사용하려고 한다면 어떻게 해야 할까. 두 가지 방법이 있다.
- 패키지와 클래스를 모두 기술한다.
package example; //현재 패키지는 example이다.
public class Main {
otherexample.TV tv = new otherexample.TV();//otherexample 패키지의 TV 클래스를 가져왔다.
}
이렇게 하는 경우 패키지 이름이 길어지거나 많은 양의 외부 클래스를 사용해야 한다면 코드가 길어지고 난잡해질 것이다.
- import문 사용
대체적으로 import문을 많이 사용한다. 사용하고자 하는 패키지를 import문으로 선언하고 클래스를 사용할 때 패키지명을 생략할 수 있다. 선언은 패키지 선언과 클래스 선언 사이에 하면 되는데 다음과 같이 하면 된다.
package example;
import otherexample.TV;
//import otherexample.*; otherexample패키지의 모든 클래스를 import한다.
public class Main {
TV tv = new TV();
}
만약 다른 패키지안에 같은 이름의 클래스가 있다면 패키지 이름 전체를 기술해야 한다.
'Java' 카테고리의 다른 글
[JAVA]Getter와 Setter 메소드 (0) | 2021.05.06 |
---|---|
[JAVA]접근 제한자(Access Modifier) (0) | 2021.05.06 |
[JAVA]final 키워드와 상수(static final)의 이해 (0) | 2021.05.06 |
[JAVA]싱글톤(Singleton)과 getInstance()메소드 (0) | 2021.05.06 |
[JAVA]정적 멤버와 static, 정적 블록 (0) | 2021.05.05 |