본문 바로가기
CSE/CP1 이론

12주차_객체지향프로그래밍 II. Advanced 3. Package와 import~

by 0/0 2024. 5. 27.

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