반응형
클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다.
- 같은 이름의 클래스라도 서로 다른 패키지에 존재하는 것은 가능하다.
- 모든 클래스는 반드시 하나의 패키지에 포함되어야 한다.
- Java에서 기본적으로 이름 없는 패키지(unnamed package)를 제공한다.
- 패키지를 지정하지 않은 모든 클래스들은 같은 패키지에 속하는 이야기
- 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다.
- 클래스의 실제 이름은 패키지 명을 포함한 이름이다.
- String클래스의 실제 이름은 java.lang.String (java.lang패키지에 속한 String클래스)
클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다.
- 어떤 패키지에 속한 클래스는 해당 디렉토리에 존재하는 클래스파일(클래스 이름.class)이어야 한다.
디렉토리가 하위 디렉토리를 가질 수 있는 것처럼, 패키지도 다른 패키지를 포함할 수 있으며 . 으로 구분한다.
패키지를 쪼개는 이유는?
- 관련된 class들을 모아서 관리하기 위해서
- 배포가 필요한 소스 코드만 묶어서(packaging) 배포하기 위해서
- 빌드, 실행 시간 단축을 위해서
- 내가 원하는 class를 쉽게 찾기 위해서
도메인 명을 거꾸로 패기지를 사용한다.
- package 이름 java, javax는 JDK에서 독점적으로 사용 중이므로, 접두사로 사용 되어선 안된다.
- 프로젝트의 출처와 프로젝트 주제를 이해할 수 있게 하기 위해서 도메인 명을 거꾸로해서 사용한다.
//패키지선언 -> 클래스나 인터페이스의 소스파일(.java) 맨 위에 package 패키지명;
package com.naver.calendar.service;
//대소문자 모두 허용하지만, 클래스명과 쉽게 구분하고자 소문자 사용이 원칙
- com : 회사에서 만든 프로젝트인지 확인
- naver : 회사이름 확인
- calendar : 달력 기능이구나 확인
💡 패키지 선언문은 주석과, 공백을 제외한 첫 번째 문장이어야 한다. (소스파일에 단 한번만 선언 가능)
반응형
'책 > Java의 정석' 카테고리의 다른 글
[java] 제어자(modifier) (2) | 2023.02.04 |
---|---|
[java] import문 (0) | 2023.02.04 |
[java] 참조변수(super) (0) | 2023.02.04 |
[java] 오버로딩 오버라이딩 (0) | 2023.02.04 |
[java] 상속 (extends) (0) | 2023.02.04 |