패키지(package)
파일 시스템의 폴더 기능을 하며 클래스의 일부분으로, 클래스를 유일하게 만들어주는 식별자 역할
클래스를 체계적으로 관리하기 위해 사용
- 클래스 이름이 동일해도 패키지가 다르면 다른 클래스로 인식
- 클래스의 전체 이름은 '패키지 이름 + 클래스 이름'
- 패키지가 상,하위로 구분되어 있으면 도트를 사용하여 표현
상위 패키지.하위패키지.클래스
com.mycompany.A
패키지 선언
클래스를 작성할 때 해당 클래스가 어떤 패키지에 속할 것인지를 선언하는 것
- 패키지는 클래스의 일부
- 클래스만 따로 복사하여 다른 곳으로 이동하면 클래스를 사용할 수 없음
- 이동해야 한다면 패키지 전체를 이동시켜야 한다
- 패키지 이름 생성 규칙
- 숫자로 시작할 수 없고 _ , $ 를 제외한 특수문자를 사용할 수 없음
- java로 시작하는 패키지는 자바 표준 API에서만 사용하기때문에 사용할 수 없음
- 모두 소문자로 작성하는 것이 관례
package.com.mycompany; // package 상위패키지.하위패키지;
public class A { // public class ClassName
...
}
패키지 이름 중복 방지
여러 회사가 함께 협업하거나 다른 회사의 패키지를 이용해서 개발할 경우 패키지 이름이 중복될 가능성이 있는데
다음 내용은 중복되지 않게 하는 방법이다.
- 회사의 도메인 이름으로 패키지를 생성
- 포괄적인 이름이 상위 패키지가 되도록 하기 위해 도메인 이름을 역순으로 하여 패키지 생성
- 마지막에는 프로젝트 이름을 붙여준다
com.kakao.projectname
com.toss.projectname
import문
사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속되어 있을 때 해당 패키지의 클래스, 인터페이스를 가져오기 위해 사용
package 상위패키지(1).하위패키지(1-1);
import 상위패키지(2).하위패키지(2-1).클래스이름;
import 상위패키지(2).하위패키지(2-2).*;
public class 클래스이름{ ... }
- 패키지 선언과 클래스 선언 사이에 작성
- 사용할 클래스들이 동일한 패키지 소속일 경우 위처럼 *을 사용하여 해당 패키지에 소속된 클래스 전부를 쓸 수 있다
- 개수에 제한이 없다
- 상위 패키지를 import 했다고 하여 하위 패키지까지 import 되는 것은 아니다
- 서로 다른 패키지를 import했는데 클래스 이름이 동일할 경우, 정확하게 패키지가 포함된 클래스 전체 이름을 기술해야 한다
package com.mycompany;
import com.hankook.*; // hankook 패키지에 속한 클래스 전부 import
import com.kumho.*; // kumho 패키지에 속한 클래스 전부 import
import com.hyundai.Engine; // hyundai 패키지의 Engine클래스 import
public class Car {
// 필드
Engine engine = new Engine(); // hyundai 패키지에만 있음
SnowTire tire1 = new SnowTire(); // hankook 패키지에만 있음
BigTire tire2 = new BigTire(); // kumho 패키지에만 있음
com.hankook.Tire tire3 = new com.hankook.Tire(); // hankook, kumho 패키지의 클래스 이름이
com.kumho.Tire tire4 = new com.kumho.Tire(); // Tire로 동일한 이름이기때문에 전체 기술
'혼자 공부하는 자바 📖 > Chapter 06 클래스' 카테고리의 다른 글
Chapter 06-6(2) 패키지와 접근 제한자 (0) | 2022.12.05 |
---|---|
Chapter 06-3(2) 생성자 오버로딩, 다른 생성자 호출: this() (0) | 2022.11.28 |