github.com/whiteship/live-study/issues/7
목표자바의 패키지에 대해 학습하세요. 학습할 것 (필수)
|
1. package 키워드
- 자바에서 클래스를 효율적으로 관리하기 위하여 패키지(package) 개념을 사용
- 패키지의 물리적인 형태는 파일 시스템의 폴더
- 클래스를 유일하게 만들어주는 식별자 역할 (클래스의 전체이름은 "패키지명+클래스명" 구분은 도트) 따라서 클래스 이동시 패키지 전체를 이동시켜야 한다.
- 패키지는 컴파일 과정에서 자동으로 생성되는 폴더
- 클래스 내 선언 : package 상위패키지.하위패키지;
상위패키지.하위패키지.클래스명
package com.company;
public class ClassName {
}
패키지명 명명 규칙
숫자로 시작하면 안되며, 특수문자는 _ $ 만 가능 |
java로 시작하는 패키지는 자바 표준 API에서 사용하기에 불가 |
모두 소문자로 작성하는 것이 관레 |
패키지 선언이 포함된 클래스 컴파일
- 패키지 폴더 생성과 함께 컴파일하기 위해서는 -d 옵션을 붙여야 한다.
- javac -d [패키지가 생성될 위치] ClassName.java : 자동으로 패키지 생성 + 그 내부에 .class 파일 생성
2. import 키워드
- 다른 패키지에 속하는 클래스를 사용하기 위한 선언문
- package 경로 전부를 입력하지 않아도 되어 번거로움이 줄어듦
- 작성 위치 : 패키지 선언과 클래스 선언 사이
- *를 사용하여 패키지 하위 모든 클래스 import 가능 (하위 패키지는 대상 아님)
- 동명의 class의 상위 클래스를 모두 import하면 컴파일 에러. (이럴 땐, 하나의 클래스는 상위 패키지 경로 기술)
import com.company.*; //company package 하위 클래스 모두 import. 패키지 제외
import com.company.project.*; //project package 하위 클래스 모두 import
* static import (스태틱 임포트)
- 특정 static method를 import하여, 인스턴스 생성없이 사용 가능하도록 한 자바5에서 추가된 기능
// Math class의 abs라는 정적 메소드를 static import하여, 클래스명 없이 메소드 명으로만 사용 가능
import static java.lang.Math.abs;
import static java.lang.Math.PI; // 정적 멤버 변수에도 적용 가능
3. 클래스패스
- 클래스를 찾기위한 경로. java 명령을 실행하는 위치
- JVM이 프로그램을 실행할 때 클래스파일을 찾는 기준이 되는 경로
- .class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록
- 클래스패스 지정 방법 : 환경변수 CLASSPATH 찾는 방법, 자바 런타임시 -classpath 플래그를 사용하는 방법
자세한 내용은 위 포스팅을 참고하여 더 공부가 필요할 것 같다.
4. CLASSPATH 환경변수
- 클래스패스를 환경변수로 지정하는 방법
5. -classpath 옵션
- 자바를 실행할 때 사용할 클래스들의 위치를 가상머신에게 알려주는 역할을 함
- 필요한 클래스 파일 위치 경로 추가하고 싶다면 ;(세미콜론)으로 연결 가능하다.
javac -classpath [필요한 클래스 파일경로] [자바파일 경로]
6. 접근지시자 (Access Modifier)
객체 생성을 제한하거나 객체의 특정 데이터, 메소드를 보호하기 위하여 사용
- 클래스 제한 : 다른 패키지에서 클래스 사용 제한
- 생성자 제한 : 클래스로부터 객체를 생성하지 못하도록 제한
- 필드, 메소드 제한 : 특정 필드와 메소드를 보호 및 제한
종류
- public : 모든 패키지에서 아무런 제한 없이 사용 가능
- protected : 같은 패키지에 속한 클래스 + 자식 클래스에서 접근 가능
- default : 같은 패키지에 속한 클래스에서 접근 가능
- private : 오로지 해당 클래스 내부에서만 사용 가능
라이브 스터디 피드백
- FQCN : Fully Qualified Class Name
- 빌트인 package ( 따로 import 안해줘도 됨)
- classpath 옵션은 자바 실행 , 자바 컴파일시 둘다 사용 가능! (java, javac )
외부 라이브러리 추가 시, 이러한 라이브러리의 jar 파일도 classpath에 들어가게 됨. ( 따라서 컴파일할 때도 classpath 되는 것 알 수 있음,,)
- 모든 클래스는 어떤 패키지에 속하게 된다.
- 하나의 파일 속 모든 클래스는 동일한 패키지에 속한다.
- 패키지를 선언하지 않으면 디폴트 패키지 (unnamed package)에 속하게 된다.
- 상수를 정의할 때 : 상수만 정의한 클래스를 만들어서 사용 ( 생성자 접근 제한하여 인스턴스 생성 막은 클래스로 )
- code style - java - imports - import with [999] -> *
'Programming > Java' 카테고리의 다른 글
[whiteship 온라인 스터디] 9주차 과제 - 예외처리 (0) | 2021.02.13 |
---|---|
[whiteship 온라인 스터디] 8주차 과제 - 인터페이스 (0) | 2021.02.13 |
[whiteship 온라인 스터디] 6주차 과제 - 상속 (0) | 2020.12.26 |
[whiteship 온라인 스터디] 5주차 과제: 클래스 (0) | 2020.12.26 |
[whiteship 온라인 스터디] 4주차 과제: 제어문 (0) | 2020.12.26 |