'폴더' 라고 생각하자
클래스의 묶음
클래스의 일부분
→ 식별자 역할: 클래스 이름이 동일하더라도, 패키지가 다르면 다른 클래스로 인식
→ 따라서, 클래스 이동 시 패키지 전체를 이동시켜야 함
형태
package 상위 패키지.하위 패키지.클래스
...
예시
숫자로 시작 X
언더바( _ ), $ 만 사용 O (다른 특수문자 X)
대소문자 구분 필요
예약어 X
소문자로 시작
모두 소문자로 할 것을 권장
(단, 가독성을 위해서는 위반 가능)
한 단어 사용을 권장
(상위 패키지 한단어, 하위 패키지 한단어씩
여러 사람 또는 기업과 협업할 경우 표준 패턴을 따름
(개인용일 경우 무관)
패키지 명 중복
com.samsung.projectname
come.hyundai.projectname개발 회사에서 회사들 간 패키지 중복을 방지하기위해, 회사의 도메인 이름으로 패키지를 만든다.
도메인 이름 역순으로 패키지이름을 짓는데, 포괄적인 이름(com)이 상위 패키지가 되도록하기 위함이다.
주의
소스파일 작성 시, 패키지를 선언하지 않는 경우
자바에서 기본적으로 제공하는 '이름 없는 패키지'가 되어버린다.이런 클래스들이 많아지면
패키지를 지정해두지 않은 모든 클래스들은 자동적으로 '이름 없는 패키지'에 같이 속하게 되어버린다.
사용할 class or interface 가 다른 package에 소속되어 있다면,
import 문으로 해당 package의 class or interface를 가져와 사용할 것임을 컴파일러에게 알림
문법
// 방법 1
import 패키지명.클래스명;
// 방법 2
import 패키지명.*;
예시
package com.mycompany;
import com.hankook.*; // import com.hankook.Tire; 과 동일
public class Car {
Tire tire = new tire();
}
예시
import static java.lang.Integer.*; // Integer클래스의 모든 static메서드
import static java.lang.Math.random; // Math.random()만 괄호 안 붙임
import static java.lang.System.out; // System.out을 out만으로 참조 가능
class EX {
public static void main(String[] args) {
out.println(Math.random);
}
}