///
Search
😯

package, import, classpath, 접근 제어자

태그
JAVA

package

클래스를 구분짓는 폴더 개념
자바는 패키지의 가장 상위 디렉토리(root)에서 실행해야 한다는 약속이 있기 때문에 해당 패키지로 가서 컴파일하지 않는다.
소스에 가장 첫 줄에 패키지 선언, 하나만 선언이 되어야 한다.
패키지 이름과 위치한 폴더의 이름이 같아야하고 패키지 이름은 java로 시작하면 안된다.
모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있다. 이 둘을 합쳐야 완전하게 한 클래스로 표현한다고 할 수 있다.
보통은 기본 패키지의 이름은 도메인 네임을 거꾸로 뒤집은 형태이다.
패키지 이름 지정 규칙
FQCN(Fully Qualified Class Name)
Namespace

import

다른 패키지명에 있는 클래스를 찾지 못할때 사용
패키지에 다수 클래스를 import 해야 한다면 import 패키지.*를 사용한다.
import static 의 경우 static한 변수와 static한 메서드를 사용하고자 할 때 용이하다.(생각보다 나쁘지 않은 기능이다. Junit과 같이 Assertion이나 기타 등등을 사용할 때 유용하다.)
import 한 패키지의 하위 패키지는 import 되지 않는다.
Plus Constant Interface - 상수를 모아 놓은 인터페이스에 대한 ANTI pattern

접근 제어자

접근 제어자는 클래스, 메서드, 인스턴스, 클래스 변수를 선언할 때 사용된다. 자바에서 사용하는 접근제어자는 public, protected, package-private, private가 있다. 상속에서는 접근이 힘든 접근제어자부터 접근이 용이한 순서로 순차적으로 단계를 하양 조정 할 수 있다.(protected → public)
public
누구나 접근가능
protected
같은 패키지에 있거나 상속 받은 경우 사용 가능
package-private
아무 접근제어자를 주지 않은 경우, 같은 패키지 내에서 접근 가능
private
같은 클래스에서만 접근 가능

classpath

클래스를 찾기 위한 경로이다. jvm이 프로그램을 실행할 때, 클래스 파일을 찾는데 클래스패스를 사용한다.

classpath를 지정하기 위한 두 가지 방법

CLASSPATH 환경 변수 사용
java runtime에 -classpath 옵션 사용