백기선 - JAVA STUDY/WEEK7
목표
자바의 패키지에 대해 학습하세요.
학습할 것 (필수)
- package 키워드
- import 키워드
- 클래스패스
- CLASSPATH 환경변수
- classpath 옵션
- 접근지시자
package 키워드
패키지
- 관련 클래스나 인터페이스등을 그룹화하여 구분짓는 폴더 개념의 단위
- 네임스페이스를 정의하는 역할
- 모든 클래스에는 클래스의 이름과 패키지 이름이 있으며 이 두가지를 합쳐서 표현하는 것이 한 클래스를 완전하게 표현했다고 할 수 있다(FQCN:Fully Qualified Class Name)
- 소스의 가장 첫 줄에 위치해야 하며, 패키지 선언은 소스에 한 개만 존재할 수 있다.
- 패키지 이름과 위치한 폴더의 이름이 같아야 한다.
패키지 명명 규칙
- 소문자로 짓는다.
- 자바의 예약어를 사용하면 안된다.
- 소스 파일들을 그룹으로 구분하기 위해 점(.)으로 구분한다.
- 컨벤션:웹사이트 주소르 ㄹ역으로 표한 형식, 사이트명으로 많이 구분한다
패키지 이름 지정 규치
패키지 시작이름 | 내용 |
java | 자바 기본 패키지(java vendor개발) |
javax | 자바 확장 패키지(java vendor개발) |
org | 일반적으로 비영리 단체(오픈소스) 패키지 |
com | 일반적으로 영리 단체(회사) 패키지 |
자바에서 자주 사용하는 기본적인 패키지들은 import를 따로 하지 않아도 사용할 수 있도록 빌트인 패키지로 제공된다.
import 키워드
import 키워드는 다른 패키지에 있는 클래스나 인터페이스 등을 참조할 때 사용한다.
빌트 인 패키지는 따로 import하지 않아도된다.
다른 패키지의 정적(static) 멤버 또한 import가 가능하다.(static import를 사용할 수 있음)
한 패키지에서 여러개의 클래스를 import 한다면 '*'를 사용하여 import 할 수 있다.
다른 패키지의 것을 참조 할 때 구문이 길어지는 것을 막을 수 있어서 유용하다.
Phone클래스에서 참조하기 위한 관련 클래스들을 모아두는 what이라는 패키지를 생성하여
Whatis라는 클래스를 생성한 후 다른 패키지에서도 사용 가능 하도록 public 접근 지시자로 멤버 변수와 static 메서드를 선언하였다.
what 패키지에서 전체를 불러오는 방식과 static 멤버 하나만 불러오는 방식을 둘 다 보여주었다( 실제로는 이렇게 하면 안됨)
이렇게 import 키워드를 사용하여 다른 패키지에 있는 클래스나 인터페이스 등을 가져와 사용할 수 있다.
접근 제어자
접근 제어자는 클래스,메소드,인스턴스 및 클래스 변수를 선언할 때 사용된다.(interface는 public만 가능)
public > protected>default>private 순서대로 허용 범위가 넓어진다.
클래스 내부 | 동일 패키지 | 상속받은 클래스 | 이외의 영역 | |
private | o | x | x | x |
default | o | o | x | x |
protected | o | o | o | x |
public | o | o | o | o |
클래스 패스
클래스를 찾기 위한 경로
JVM이 프로그램을 실행할 때 , 클래스 파일을 찾는 데 클래스 패스를 사용한다.
프로그램 실행시에 소스코드를 컴파일한 바이트 코드를 java runtime이 실행하려면 이 바이트 코드 파일을 찾을 수 있어야한다. 이 때 .class 파일을 찾기 위해 classpath에 지정된 경로를 사용한다.
classpath는 .class 파일이 포함된 디렉토리와 파일을 ';'로 구분한 목록이다.
classpath 지정 시 2가지 방법이 있다.
- CLASSPATH 환경변수 사용
- java runtime에 -classpath 옵션 사용
CLASSPATH 환경변수
환경 변수는 운영체제에 지정하는 변수로 JVM이 동작 시 클래스 로더가 이 값을 참고해서 동작하게 되는데 CLASSPATH 환경 변수를 사용하면 실행시 마다 -classpath 옵션을 주지 않아도 되기 때문에 편리하다.
-classpath
java 명령어 실행 시 옵션으로 지정하여 컴파일 시 필요한 참조 클래스 파일들을 찾기 위해 파일 경로를 지정해 주는 옵션으로 CLASSPATH 환경변수에 등록을 해두어도 이 명령어를 사용하면 -classpath에 지정된 위치에서 먼저 파일을 찾는다 (우선순위가 더 높다)