반응형
www.youtube.com/watch?v=HLnMuEZpDwU
목표
자바의 패키지에 대해 학습하세요.
학습할 것 (필수)
- package 키워드
- import 키워드
- 클래스패스
- CLASSPATH 환경변수
- -classpath 옵션
- 접근지시자
추천 도서
book.naver.com/bookdb/book_detail.nhn?bid=1486282
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 |
위와 같이 접근을 제한할 수 있습니다.
반응형
'Study > java' 카테고리의 다른 글
[백기선님의 자바 라이브 스터디] 9주차 - 예외 처리 (0) | 2021.02.24 |
---|---|
[백기선님의 자바 라이브 스터디] 8주차 - 인터페이스 (0) | 2021.02.21 |
[백기선님의 자바 라이브 스터디] 6주차 - 상속 (0) | 2021.02.17 |
[도서] Object - 객체 설계 (0) | 2021.01.05 |
[백기선님의 자바 라이브 스터디] 4주차 - 선택문과 제어문 (0) | 2020.12.28 |