Package
Java에서 package는 클래스를 모아 둔 것으로 특정 기능을 하기 위해 필요한 클래스들을 그룹화 한 것이다.
package A
class A{
}
package B
class B{
}
package A
public static void main(String args[]){
B b = new B(); // 호출 불가
}
위와 같은 상황일 때 main에서 B 클래스는 B 패키지에 있으므로 호출을 할 수 없다.
Import
Java에서 다른 패키지에 있는 클래스를 사용하기 위해서는 import문을 사용하여 해당 패키지에 있는 클래스를 가져다 사용할 수 있다.
단, 가져오려는 패키지의 클래스와 기존의 사용하던 클래스의 이름이 같을 경우 패키지 이름까지 명시 해야된다.
package A
import B.B
public static void main(String args[]){
B b = new B(); // B 패키지의 B 클래스를 가져와 사용할 수 있음.
}
Classpath
java는 컴파일 시 해당 클래스 마다 .class 파일이 생성된다.
package Test
class A{
}
class B{
}
class C{
}
위와 같은 클래스들은 A.class , B.class , C.class로 컴파일 시 생성된다.
이 클래스 파일의 위치는 Test 패키지 안에 생성된다.
그러면 class 파일을 Test2에 옮긴다면 실행이 될까?
아쉽게도 되진 않는다. 이 파일을 실행하기 위해서 클래스 파일이 필요한데 클래스 파일의 위치를 맘대로 옮겨벼렸으니 실행 시 class 파일을 찾을 수 없으므로 실행이 정상적으로 이루어지지 않게 된다.
classpath 환경변수
java 코드를 작성하고 실행하기 위해 우리는 eclipse, Intelij 등 GUI를 제공하는 프로그램들을 사용했을 것이다. 이와 같은 프로그램들은 처음 다운한 후 JDK path를 설정만 한다면 문제없이 사용할 수 있도록 알아서 세팅을 해 준다. 하지만 항상 프로그램에 의존할 수 없기 떄문에 CLI 환경에서도 잘 사용할 수 있도록 내가 직접 설정해 줄 수 있는 것이 중요하다.
Java 옵션 모음
| 옵션 | 설명 |
|---|---|
| -d | 클래스가 있는 디렉터리에 클래스 파일을 생성한다. |
| -g | 디버깅과 관련된 정보를 포함한 클래스 파일을 생성한다. |
| -version | JVM 버전을 출력하고 프로세스를 종료한다. |
| -verbosegc | gc가 발생하는 정보를 출력한다. |
| -cp, -classpath | 클래스 패스를 지정할 때 사용한다. |
| -encoding | 소스 파일에 사용된 문자열 인코딩을 설정한다. |
| -Xms | JVM의 시작 크기를 지정한다. |
| -Xmx | JVM의 최대 크기를 지정한다. |
| -Xss | 스레드의 스택 크기를 지정한다. |
접근 제한자
한 클래스가 다른 클래스를 사용하지 못하게 막거나, 상속 받았음에도 메서드를 사용할 수 없게 만들어 주는 역할 등을 수행한다.
| 접근 제한자 | 같은 클래스 | 같은 패키지 | 하위 클래스 | 전체 |
|---|---|---|---|---|
| public | 가능 | 가능 | 가능 | 가능 |
| protected | 가능 | 가능 | 가능 | 불가능 |
| default | 가능 | 가능 | 불가능 | 불가능 |
| private | 가능 | 불가능 | 불가능 | 불가능 |
이걸 사용하는 이유는 해당 메서드 또는 필드가 외부로부터의 접근에 데이터를 보호하기 위해서 만들어졌다.
'Java' 카테고리의 다른 글
| Java Study 5-2주차 (0) | 2023.11.05 |
|---|---|
| Java Study 5-1주차 (0) | 2023.11.05 |
| Java Study 3-2주차 (0) | 2023.10.14 |
| Java Study 3-1주차 (1) | 2023.10.14 |
| Java Study 2-2주차 (0) | 2023.10.09 |