자바공부하기 131

패키지 만들기

- 자바 원시 파일은 다음과 같은 순서로 이루어져있어야한다.

 

 

- 자바의 패키지는 디렉토리와 연관되어있다.

: 특정 패키지에 속하도록 설정했다면 그 이름과 동일한 이름을 가진 디렉토리에 컴파일 되어야한다.

: 패키지 선언이 없으면 해당 클래스들은 익명 패키지에 속한다.

 

 

 

 

 

실행

1. package1 이라는 폴더를 만들고 파일들을 저장한다.

2. C:\java\source\ 위치에서 아래와 같이 컴파일 후 실행

3. javac  -d  C: \java\source\package1    C: \java\source\package1\ *.java

4. java -cp   .;C:\java\source\package1   MyApplication

 

 

자바공부하기129.

패키지와 컴파일러/JVM

- 패키지 이름이 생략된 클래스/인터페이스 이름은 컴파일러가 import 문장을 참조하여 모두 완전한 패키지이름으로 변환하여 컴파일

: 이름으로 변환하는 과정 중 완전한 패키지 이름을 가진 클래스가 실제 로딩 가능한 클래스인지 알아보는 과정이 필요 - 클래스로더(import가 여러 개 될 수 있음을 기억할 것)

: 이것은 뒤의 classpath와 관련된다.

: 패키지 이름은 반드시 그 파일이 속해있는 디렉토리 이름과 일치해야 한다.

 

 

1. 컴파일러는 위와 같이 완전 클래스명 후보군을 만들어낸다.

2. 그 다음 CLASSPATH를 기반으로 위 후보 클래스 파일이 실제 존재하는지 검색한다. 자바 디폴트 라이브러리(rt.jar)를 검색한 후 현재 디렉토리(.)를 검사한다.

: java.lang.newClass를 찾아본다면 ./java/lang/디렉토리에 newClass.class파일이 있는지 찾는 것이다.

3. 찾아서 단 하나만 일치하는 게 var의 형을 결정한다. 그러나 여러 개가 있다면 충돌 에러를 발생시킨다.

JAVA공부하기127

패키지(package)

- JAVA에서는 서로 관련된 클래스를 하나의 단위로 그룹화

- 계층 구조를 이루고 있음(이름만)

- 소프트웨어 재사용을 위한 매커니즘

- C/C++의 라이브러리와 동일

- 사용방법은 C/C++과 전혀 다름

 

목적

- 클래스, 인터페이스, 부 패키지 이름의 우연한 충돌방지 및 관리 용이성

: 2개의 클래스 혹은 인터페이스가 이름이 서로 같아도 서로 다른 이름의 패키지에 속하면 구분

: name space 부여

 

- 패키지단위 접근권한지정

 

패키지 구성

- 패키지 이름 : 클래스 파일이 있는 폴더 구조

- 클래스 이름 : 실제 자바 api

 

 

 

패키지 구조

+ Recent posts