목표
자바의 패키지에 대해 학습하세요.
학습할 것 (필수)
- package 키워드
- import 키워드
- 클래스패스
- CLASSPATH 환경변수
- -classpath 옵션
- 접근지시자
추천 도서
book.naver.com/bookdb/book_detail.nhn?bid=1486282
테스트 주도 개발
최근 주목받고 있는 프로그래밍 방법인 테스트 주도 개발, 즉 TDD를 설명한 최초의 책이자, 가장 권위적인 책. 테스트 주도 개발을 퍼뜨린 장본인이며 객체 지향 프로그래밍의 선구자 중 한 사람
book.naver.com
Package 키워드
Package란 무엇인가?
- Package는 Class, Interface file의 집합
- 첫 줄에 작성되어야함
- 모든 클래스에는 클래스 이름과 패키지 이름 존재합니다. 이 둘을 합쳐 FQCN( Fully Qualified Class Name ) 이라고 합니다.
package com.example.practice; // package
public class Car {
// logic
}
위 소스 기준으로 FQCN을 알아보면 아래와 같습니다.
Class Name : Car
Package Name : com.example.practice
FQCN : com.example.practice.Car
Built-In-Package
개발자들이 가장 많이 사용하는 Package는 java.lang, java.util 일 것입니다.
이러한 Package는 자바 내부에 Built in 되어있기 떄문에 import를 해주지않아도 사용가능합니다.
package com.example.practice.annotations;
public class Car {
public void print() {
String a = ""; // 별도의 import없이 java.lang.String을 사용할 수 있다
}
}
- Package Naming Rule
{최상위 도메인/나라코드}.{회사명}.{프로젝트명}
- 최상위 도메인/나라코드 : com, net, org...
- 회사명 : 회사명, 그룹명...
- 프로젝트명 : 프로젝트명, 프로그램명
Import 키워드
- Import는 다른 클래스나 인터페이스를 참조할 때 사용합니다.
- 동일한 패키지 내의 클래스나 인터페이스를 참조할 때는 별도로 추가하지 않아도 됩니다.
- 다른 패키지의 클래스나 인터페이스를 참조할 떄 사용됩니다.
- Static을 사용할 때도 사용할 수 있습니다.
package com.example.practice.pack; // package
import com.example.practice.other.Policy; // 다른 패키지 참조
// static을 참조할 때는 아래와 같이 2가지 방법으로 참조 가능
//import static com.example.practice.pack.StoreConstant.*;
import static com.example.practice.pack.StoreConstant.ADDRESS;
import static com.example.practice.pack.StoreConstant.NAME;
import static com.example.practice.pack.StoreConstant.VISITOR;
public class Store {
private Staff staff; // 같은 패키지 참조이기 때문에 import되지 않음
private Policy policy;
public Store() {
staff = new Staff();
policy = new Policy();
}
public void print() {
System.out.println(ADDRESS);
System.out.println(NAME);
System.out.println(VISITOR);
}
}
import 키워드를 사용하여 클래스나 인터페이스를 추가할 때에는 FQCN을 사용합니다.
import 키워드 사용 시 '*'를 사용하면 해당 패키지에 있는 모든것을 참조하게 됩니다. 이 방법은 해당 패키지에 있는 모든 것을 참조하지 않는 이상 Resource 낭비이므로 비추천합니다.
클래스패스
JVM에서 Application을 구동하면 Class Loader가 클래스패스 변수를 기준으로 클래스 파일들을 찾아 Load 시킵니다.
Java Application 실행 순서
- JVM이 실행되기 전에 메모리를 할당받습니다.
- Java Complier에서 .java 파일을 .class로 변환합니다. ( 바이트 코드 )
- Class Loader가 .class 파일을 Load합니다.
- Excution Engine을 통해 Load된 Class 파일을 해석합니다.
- 해석된 byte code는 Runtime Memory Area를 통해 사용됩니다.
JVM의 자세한 내용은 1주차 내용을 참조해주세요.
Java Application 실행 중 3번에서 Class Loader가 .class 파일을 찾을 때 클래스패스를 기준으로 찾습니다.
클래스패스 설정하는 방법은 2가지 방법이 있습니다.
- 환경변수를 이용
- java runtime 시 -classpath 사용
접근지시자
접근제어자는 클래스, 메소드, 인스턴스 및 클래스 변수를 선언할 때, 사용됩니다. 접근지시자를 통해 협업 시 해당 클래스를 어떻게 사용하는지 알 수 있습니다.
허용 범위
public > default > protected > private
클래스내부 | 동일패키지 | 상속받은클래스 | 이외의 영역 | |
private | o | x | x | x |
default | o | o | x | x |
protected | o | o | o | x |
public | o | o | o | o |
위와 같이 접근을 제한할 수 있습니다.
'프로그래밍 > java' 카테고리의 다른 글
자바의 예외 처리 방법 (0) | 2021.12.29 |
---|---|
자바의 인터페이스의 특징 및 사용법 (0) | 2021.12.29 |
자바의 상속의 특징 및 사용법 (0) | 2021.12.29 |
자바의 제어문과 반복문 사용 방법 (0) | 2021.12.29 |
자바의 다양한 연산자 학습 (0) | 2021.12.29 |