Java의 정석 기초편(남궁성) 정리 + a/6 ~ 7. 객체지향 프로그래밍 1, 2

객체지향 프로그래밍2 12 ~ 15 . 패키지 , 패키지의 선언 , 클래스 패스 , import문

doriver 2022. 9. 26. 17:31

패키지(package)

클래스의 묶음

패키지에는 클래스 또는 인터페이스를 포함시킬수 있다.

서로 관련된 클래스들끼리 묶어 클래스를 효율적으로 관리할수 있다.

 

사실 클래스의 실제 이름(full name)은 패키지 명을 포함한다

예) String클래스의 실제 이름은 java.lang.String이다. ( java.lang패키지에 속한 String클래스 )

예) System클래스의 실제 이름 java.lang.System

 

그래서 같은 이름의 클래스일지라도 서로 다른 패키지에 속하면 패키지 명으로 구별 가능하다

( 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능 )

 

패키지의 선언

클래스나 인터페이스의 소스파일(.java)의 맨 위에

package 패키지명;

한줄을 적는다

 

해당 소스파일에 포함된 모든 클래스나 인터페이스는 선언된 패키지에 속하게 된다.

패키지명은 클래스명과 쉽게 구분하기 위해 소문자로 하는것을 원칙으로 한다.

 

소스파일에 자신이 속할 패키지를 지정하지 않은 클래스는 자동으로 '이름없는 패키지'에 속하게 된다

( java에서는 기본적으로 '이름없는 패키지'를 제공한다 )

 

클래스 패스 ( classpath )

패키지의 루트 디렉토리(상위 디렉토리)를 클래스패스에 포함시켜야 , 실행시 JVM이 패키지 안에있는 클래스들을 찾을수 있다.

' 제어판 - 시스템 - 고급시스템 설정 - 환경변수 - 새로만들기 ' 에서 변수이름에 'CLASSPATH' , 변수값 ' ~ ' 입력  

 

 

import문

( 다른 패키지의 클래스를 사용할 때 )

import 패키지명.클래스명;

import 패키지명.*;
// 컴파일러는 해당 패키지에서 일치하는 클래스이름을 찾아야하는 수고를 더 하지만, 실행시 성능 차이는 없다

다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다

( import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해주면 패키지명을 생략할수 있다 )

 

import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다.

컴파일러는 컴파일 시에 import문을 통해 소스파일에 사용된 클래스들의 패키지를 알아낸다음, 모든 클래스 이름앞에 패키지 명을 붙여준다