09 package와 import
● 패키지
○ 클래스의 묶음
■ 클래스 또는 인터페이스를 포함시킬 수 있음
■ 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓아 클래스 관리 효율적
○ 같은 이름의 클래스라도 패키지가 다르면 다른 클래스!
■ 클래스의 실제 이름은 패키지명도 포함되는 것!
○ 물리적으로 하나의 디렉토리
■ 클래스도 물리적으로 하나의 클래스 파일임(.class)
■ 어떤 패키지에 속한 클래스는 해당 디렉토리에 존재하는 클래스 파일이어야 함
■ 패키지도 다른 패키지를 포함할 수 있음(구분 ‘ . (점)’)
○ 패키지의 특징
1) 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용
2) 모든 클래스는 반드시 하나의 패키지에 속해야 함
3) 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있음
4) 패키지는 물리적으로 클래스파일을 포함하는 하나의 디렉토리
● 패키지의 선언
○ 클래스나 인터페이스의 소스파일에 “package 패키지명;” 적어줌
■ 패키지 선언문은 반드시 소스파일에서 주석과 공백을 제외한 첫 번째 문장이어야 함
■ 하나의 소스파일에 단 한번 선언될 수 있음
■ 패키지명은 소문자로 적는 것이 원칙
○ 이름 없는 패키지(unnamed package)
■ 모든 클래스는 반드시 하나의 패키지에 포함되어야 함
■ 소스파일 작성할 때 패키지 선언 안하고 사용할 수 있는 것은 이름 없는 패키지 덕분
■ 소스파일에 자신이 속할 패키지를 지정하지 않은 클래스는 자동적으로 ‘이름 없는 패키지’에 속하게 됨
■ 결국 소스 파일은 패키지에 속한 샘이 되는 것
● import문
○ 컴파일러에게 소스파일에서 사용된 클래스의 패키지에 대한 정보를 제공
■ 소스 코드 작성 시 다른 패키지의 클래스 사용하려면 패키지명이 포함된 클래스 이름을 전부 사용해야 함
■ 클래스의 코드 작성 전 import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해줌
■ 명시해주면 클래스명을 패키지까지 포함해서 쓰지 않아도 됨
○ import문은 프로그램 성능에 전혀 영향을 미치지 않음
○ import문의 선언
■ package문 다음, 클래스 선언문 이전에 위치
■ 일반적인 소스파일(*.java)의 구성 순서
(1) package문
(2) import문
(3) 클래스 선언
■ import문 선언 방법
import 패키지명.클래스명 ;
import 패키지명. * ;
■ 클래스의 이름 대신 *를 사용하기도 함
□ 한 패키지의 여러 클래스 사용하는 경우는 *을 사용해 모든 클래스를 import함
□ 하위 패키지의 클래스까지 포함하지는 않음
□ 마지막 패키지의 모든 클래스를 대표하는 것!
import java.util. * ; (가능)
import java. * ; (불가능)
■ System이나 String같은 java.lang 패키지의 클래스들은 모든 소스파일에 묵시적으로 import되어 있는 것
○ static import문
■ static 멤버를 호출할 때 클래스 이름을 생략할 수 있음
■ 특정 클래스의 static멤버를 자주 사용할 때 편리, 코드 간결
import static java.lang.Integer. * ; // Integer 클래스의 static 메서드
import static java.lang.Math.random; // Math.random()만. 괄호 없이 사용
import static java.lang.System.out; // System.out을 out 만으로 참조 가능
이렇게 선언해 둔다면 아래 메서드가 간단해 짐
System.oyt.println(Math.random());
→ out.println(random());
'JAVA > 이론' 카테고리의 다른 글
[java][이론] 011 다형성 (0) | 2020.08.06 |
---|---|
[java][이론] 010 제어자 (0) | 2020.07.08 |
[java][이론] 008 상속 (0) | 2020.07.06 |
[java][이론] 007 생성자와 변수의 초기화 (0) | 2020.07.04 |
[java][이론] 006 변수와 메서드 (0) | 2020.07.02 |