3. Package와 import
3.1 Package
가)패키지
-의미: '서로 관련된 클래스와 인터페이스의 묶음'
*프로그램이 커지면 속하는 클래스도 많아짐
**서로 관련된 클래스들끼리 흩어지지 않도록 그룹 단위로 묶어 놓음
-장점
a.클래스를 효율적으로 관리
b.같은 이름의 클래스일지라도 서로 다른 패키지에 존재하는 것이 가능
*다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름 충돌을 피할 수 있음(?)
나)클래스와 패키지
-클래스의 실제 전체 이름은 패키지명을 포함한다.
ex) String 클래스의 실제 이름: java.lang.String
-클래스가 물리적으로 클래스 파일(.class)인 것과 같이 패키지는 물리적으로 하나의 폴더임
-패키지는 하위 패키지를 포함할 수 있으며 ','으로 구분한다.
ex) java.lang 패키지에서 lang 패키지는 java 패키지의 하위 패키지
*폴더와 개념적으로 비슷함
3.2 Package의 선언
-하나의 소스파일에는 첫 번째 문장(주석 제외)으로 단 한 번의 패키지 선언만을 허용
package 패키지명;
-해당 소스파일에 포함된 모든 클래스나 인터페이스는 선언된 패키지에 속하게 됨
-모든 클래스는 반드시 하나의 패키지에 속해야 함
*패키지가 선언되지 않은 클래스는 자동으로 이름없는(unnamed) 패키지에 속하게됨
-주의
a.하나의 소스파일에는 단 하나의 public 클래스만 허용
b. 소스파일의 이름은 public 클래스의 이름과 일치해야 함 (사진 속의 PointTest.java 파일이 소스 파일을 의미함?)

3.3 import 문
가)import문
-사용할 클래스의 패키지를 명시하는 데 사용
-import 문을 사용함으로써, 사용되는 클래스 이름에서 패키지명을 생략할 수 있음

*java.lang 패키지의 클래스는 import하지 않고도 사용할 수 있다. (String, System, Object, Tread, ...
나)import 문의 선언
-선언 방법
//import 패키지명.클래스명;
import java.util.Date;
//OR
//import 패키지명.*;
import java.util.*;
-클래스의 이름 대신 '*' : 소속 클래스를 모두 import 하라는 뜻

-import, package 등의 선언 순서
1) package 문
2) import 문
3) class 선언
다) import 문의 선언시 주의할 점들
-import 문은 컴파일 시에 처리되므로 프로그램의 성능에 아무런 영향을 미치지 않음
-클래스의 이름 대신 '*'을 사용하는 것은 하위 패키지의 클래스까지 포함하는 것은 아님?
-이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패키지명을 붙여줘야 함
import mytest.Test;
//mytest/Test.java
import systemtest.Test;
//systemtest/test.java'CSE > CP1 이론' 카테고리의 다른 글
| CP1_06.객체지향 프로그래밍_Basics_2 (0) | 2024.06.05 |
|---|---|
| CP1_07.객체지향 프로그래밍_Advanced_4. Modifier(제어자) (0) | 2024.05.29 |
| CP1_06.객체지향 프로그래밍_Basics_1 (0) | 2024.05.02 |
| CP1_05.배열_2.String배열 (0) | 2024.04.30 |
| CP1_01.Java 기본 (0) | 2024.04.24 |