일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 에러
- 제어자
- 객체지향
- 메서드
- 입출력
- for문
- 다형성
- 상속
- 예외처리
- StringBuffer
- I/O
- Connection
- array
- java
- Interface
- try-catch
- 커넥션 풀
- StringBuffer클래스
- JSP
- 배열
- 객체
- ToString
- 접근제어자
- 예외
- 인터페이스
- 내장 객체 영역
- 람다식
- DB
- 변수
- File입출력
- Today
- Total
ksouth9
객체지향언어(12) - package, import 본문
패키지(package)
패키지란, 클래스의 묶음이다.
패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적을 관리할 수 있다.
같은 이름의 클래스일 지라도 서로 다른 패키지에 속하면 패키지명으로 구별이 가능하다.
클래스가 물리적으로 하나의 클래스 파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. 그래서 어떤 패키지에 속한 클래스는 해당 디렉토리에 존재하는 클래스파일(.class)이어야 한다.
패키지는 다른 패키지를 포함할 수 있으며 '점'으로 구분한다. 예를 들면 java.lang패키지에서 lang패키지는 java패키지의 하위패키지이다.
- 하나의 소스파일(.java)에는 첫 번째 문장으로 단 한 번의 패키지 선언만 허용한다.
- 모든 클래스는 반드시 하나의 패키지에 속해야 한다.
- 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다.
- 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다.
패키지 선언
클래스나 인터페이스의 소스파일(.java)의 맨위에 'package 패키지명' 을 적어주면 된다.
- 패키지 선언문은 반드시 소스파일에서 주석과 공백을 제외한 첫 번째 문장이어야 한다.
- 하나의 소스파일에 단 한번만 선언될 수 있다.
- 해당 소스파일에 포함된 모든 클래스나 인터페이스는 선언된 패키지에 속하게 된다.
- 패키지명은 대소문자를 모두 허용하지만, 클래스명과 쉽게 구분하기 위해서 소문자로 하는 것을 원칙으로 한다.
- 모든 클래스는 반드시 하나의 패키지에 포함되어야 한다.
모든 클래스는 반드시 하나의 패키지에 포함되어야 하지만 소스파일을 작성할 때 패키지를 선언하지 않고도 아무런 문제가 없었던 이유는 자바에서 기본적으로 제공하는 '이름없는 패키지(unnamed package)' 때문이다.
소스파일에 자신이 속할 패키지를 지정하지 않은 클래스는 자동적으로 '이름 없는 패키지'에 속하게 된다. 패키지를 지정하지 않는 모든 클래스들은 같은 패키지에 속하는 셈이다.
import문
import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다.
컴파일 시에 컴파일러는 import문을 통해 소스파일에 사용된 클래스의 패키지를 알아 낸 다음, 모든 클래스이름 앞에 패키지명을 붙여 준다.
import문 선언
import 패키지명.클래스명;
또는
import 패키지명.*;
클래스이름을 지정해주는 대신 '*'을 이용해서 지정된 패키지에 속하는 모든 클래스를 패키지명 없이 사용할 수 있다.
모든 소스파일(.java)에서 import문은 package문 다음에, 그리고 클래스 선언문 이전에 위치해야 한다. import문은 한 소스파일에 여러 번 선언할 수 있다.
일반적인 소스파일(*.java)의 구성
1. package문
2. import문
3. 클래스 선언
'Java' 카테고리의 다른 글
객체지향언어(14) - 접근 제어자(access modifier) (0) | 2022.03.10 |
---|---|
객체지향언어(13) - 제어자(modifier) (0) | 2022.03.08 |
객체지향언어(11) - super (0) | 2022.03.08 |
객체지향언어(10) - 오버라이딩(overriding) (0) | 2022.03.07 |
객체지향언어(9) - Object클래스 (0) | 2022.03.07 |