티스토리 뷰

패키지 의미

관련이 있는 클래스와 인터페이스의 묶음

 - 클래스와 인터페이스는 패키지의 멤버로 존재


전체적으로 계층 구조의 클래스 라이브러리

 - 패키지(폴더와 유사) 단위로 계층적으로 분류됨


패키지 용도

 - 쉽게 찾아 사용하기 위해

 - 이름 충돌을 피하기 위해

 - 접근 제어를 위해



시스템 패키지

Java가 제공하는 클래스 라이브러리

 - JDK와 함께 설치됨


일반적으로 jar파일로 압축되어 있음

 - 예:C:\ProgramFiles\Java\jdk1.8.0_121\jre\lib\rt.jar
 - 예를 들어 java\lang\Boolean.class가 존재함




시스템 패키지의 사용

가장 기본이 되는 최상위 시스템 패키지는 java임

 - 대부분의 시스템 패키지는 java.으로 시작됨


Java프로그램에서 상위와 하위 패키지의 구분을 위해 도트(.)를 사용

 - 예:java.lang,java.io,java.awt,java.util 

 - Java언어의 기본 클래스는 java.lang에 존재

 - 프로그램에서 클래스를 사용할 때는 java.io.IOException과 같이 사용함



사용자 정의 패키지

패키지 정의 문법


 - package 구문은 소스 코드 맨 앞에 위치해야 함

1
2
package 패키지 이름 ;
1개 이상의 클래스나 인터페이스 정의

cs


 - package 구문은 소스 코드 맨 앞에 위치해야 함

 - 패키지 이름은 관례상 소문자로 작명

  * 하위 패키지는 . 으로 구분하여 작성

 - 컴파일하면 패키지가 만들어지고(또는 기존 패키지에) 클래스 파일( .class )이 패키지에 저장됨


패키지 만들기 예


1
2
3
4
5
6
package com.vehicle;
 
publicclassCar
{
    StringszType = "승용차";
}
cs


 - 컴파일 결과로 Car.class가 만들어짐

 - Car.class는 com.vehicle 패키지에 저장됨

 - com.vehicle은 어디에?

  * 컴파일 할 때 –d옵션 사용하여 지정함

  * 예 - javac Car.java­d D:\javaClasses  * 이 경우 D:\javaClasses\com\vehicle\Car.class


사용자 정의 패키지


Eclipse를 사용한 패키지 정의

 - 메뉴 [File/New/Package]를 선택

  * 패키지에 해당하는 폴더가 만들어짐

  * 생성된 패키지에서 클래스를 만들면 됨
 - 메뉴 [File/New/Class]를 선택하여 클래스 이름과 함께 패키지 이름을 입력함






패키지의 사용

같은 패키지에 있거나 public인 외부의 클래스를 사용하려면 패키지를 포함한 완전한 클래스 이름을 사용해야 함


1
graphics.Rectangle myRect = new graphics.Rectangle();
cs


1
java.util.Scanner s = new java.util.Scanner(System.in);
cs



​import문


1
import 패키지 이름.클래스 이름;
cs


1
import 패키지 이름.*;
cs


import구문은 소스 코드 맨 앞에 위치함

 - package구문이 있다면 그 다음에 위치


프로그램에서 패키지 이름을 생략하고 클래스나 인터페이스를 사용할 수 있게 함


Java 프로그램에서 import java.lang.*;구문은 자동 포함됨



패키지의 사용과 접근 제어

아래 프로그램에서 package구문이 없다면 패키지 접근 수준의 Car클래스를 사용할 수 없음


1
2
3
4
5
6
7
8
9
10
11
12
// package com.vehicle;
import com.vehicle.*;
 
class MyBus extends Bus { }
 
public class PackageTest
{
    public static void main(String args[]) {
        Bus bus = newBus();
        Car car = newCar(); //오류
    }
}
cs



1
2
3
package com.vehicle;
 
class Car{…}
cs


1
2
3
package com.vehicle;
 
public class BusextendsCar {…}
cs





클래스 찾기

컴파일하거나 실행 할 때, 필요한 클래스를 찾아야 함

 - 컴파일러가 A.class가 위치한 경로 또는 A.class를 포함하고 있는 jar파일의 존재를 알아야 함


JVM은 다음에서 클래스를 찾음

 - Java 기본 패키지

  * [Java설치폴더]\lib\*.jre

 - Java 확장 패키지
  * [Java설치폴더]\lib\ext\*.jre
 - 사용자 클래스도 찾을 수 있음
  * 이때 방법이 필요함
 - 사용자 클래스는 환경 변수 CLASSPATH에 지정된 경로 또는 jar파일에 서 찾음


환경변수 CLASSPATH

 - 컴파일러는 CLASSPATH에 지정된 경로에서 클래스를 찾음

 - CLASSPATH의 경로는 jar파일을 포함할 수 있음

 - 예

  * 프로그램에서 graphics.Circle 클래스를 사용하고 CLASSPATH=path1;path2;a.jar라고 가정

  * 이때,path1\graphics\Circle.class 또는 path2\graphics\Circle.class 또는 a.jar에 \graphics\Circle.class가 있어야 함



공지사항
최근에 올라온 글
Total
Today
Yesterday