자바에서는 클래스를 체계적으로 고나리하기 위해 패키지(package)를 사용한다. 패키지를 선언하는 방법과 패키지 간의 접근을 위한 접근 제한자에 대해 이야기 해보려 한다.
패키지
-
패키지의 물리적인 형태는 파일 시스템의 폴더 이다.
-
패키지는 클래스의 일부분으로, 클래스를 유일하게 만들어주는 식별자 역할을 한다.
-
클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식한다.
-
클래스의 전체 이름은 '패키지 이름+클래스 이름'으로 표현
com.mycompany.A
com.yourcompany.B
패키지 선언
클래스 작성 시 해당 클래스가 어떤 패키지에 속할 것인지를 선언하는 것
package 상위패키지.하위패키지;
public class ClassName { ... }
패키지 이름 규칙
- 숫자로 시작 불가
- _ 및 $를 제외한 특수문자 사용 불가
- java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용 불가
- 모두 소문자로 작성하는 것이 관례
예시1) 패키지 생성
sec06 패키지 > exam01 패키지 > com 패키지 > mycom 패키지 > Car.java 클래스
package sec06.exam01.com.mycom;
public class Car {
}
import문
사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속된 경우
해당 패키지 클래스 또는 인터페이스를 가져와 사용할 것임을 컴파일러에 알려주는 것
import 상위패키지.하위패키지.클래스이름;
import 상위패키지.하위패키지.*;
import문은 패키지 선언과 클래스 성언 사이에 작성한다.
만약, 사용하려는 클래스들이 동일한 패키지 소속이라면 개별 import문 작성보다는 *를 사용하여 해당 패키지에 소속된 클래스들을 사용할 것임을 알려주는 것도 좋은 방법이다.
import문은 개수에 제한이 없고 얼마든지 추가가 가능하다.
예시2) import문
package com.mycom;
imort com.hankook.Tire;
//또는
//import com.hankook.*;
public class Car{
Tire tire = new Tire();
}
하위 패키지는 별도의 import를 해야한다.
import com.hankook.*;
import com.hankook.project.*;
다른 패키지에 동일한 이름의 클래스가 있을 경우에는 import와 상관없이 클래스 전체 이름을 기술해야한다.
예시2) import문2
패키지는 아래와 같이 생성한다.
package sec06.exam02.mycom;
import sec06.exam02.hankook.SnowTire;
import sec06.exam02.hyundai.Engine;
import sec06.exam02.kumho.BigWidthTire;
public class Car {
// 필드
Engine enine = new Engine();
SnowTire tire1 = new SnowTire();
BigWidthTire tire2 = new BigWidthTire();
// Tire클래스는 hankook과 kumho 모두 있어서 하위 패키지 이름 모두 작성
sec06.exam02.hankook.Tire tire3 = new sec06.exam02.hankook.Tire();
sec06.exam02.kumho.Tire tire4 = new sec06.exam02.kumho.Tire();
}
import문은 단축키로도 이용가능하다. Ctrl + Shift + o 를 누르면 자동으로 import 된다.
※용어 정리
-
패키지 선언: 해당 클래스 또는 인터페이스가 어떤 패키지에 속할 것인지를 선언하는 것을 패키지 선언이라 한다.
-
import문: 사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속되어 있다면, import문으로 해당 패키지의 클래스 또는 인터페이스를 가져와 사용할 것임을 컴파일러에게 알려줘야 한다.
본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.
'Work & Study > JAVA (& 혼공자Java)' 카테고리의 다른 글
자바(Java) - 패키지와 접근 제한자3 (Getter & Setter 메소드) (0) | 2020.10.20 |
---|---|
자바(Java) - 패키지와 접근 제한자2 (접근 제한자) (0) | 2020.10.20 |
자바(Java) - 인스턴스 멤버와 정적 멤버3 (싱글톤 & final필드, 상수) (0) | 2020.10.16 |
자바(Java) - 인스턴스 멤버와 정적 멤버2 (정적 멤버 & static) (0) | 2020.10.15 |
자바(Java) - 인스턴스 멤버와 정적 멤버1 (인스턴스멤버 & this) (0) | 2020.10.15 |