목표
1. package 키워드
2. import 키워드
3. 클래스 패스
- CLASSPATH 환경변수
-classpath 옵션
4. 접근제어자
선언 : "package 패키지명"
- 클래스를 구분짓는 디렉토리
- 클래스명이 같더라도 다른 패키지에 존재한다면 중복 이름 가능
- 모든 클래스는 패키지 안에 존재해야 하며 기본적으로 이름없는 패키지에 존재하게 됨
※ import문의 선언
<선언방식>
import 패키지명.클래스명
or import 패키지명.*
- 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공
- 다른 패키지에 있는 클래스를 사용하고자 할때 사용함
※ static import문의 선언
<선언방식>
import static 패키지명.클래스명
or import static 패키지명.*
- static멤버를 호출할때 사용됨
import static java.lang.Math.*;
public class Test {
public static void main(String[] args) {
System.out.println(random());
}
}
import static을 하지 않을경우
Math.random()으로 호출을 해야하지만 import static을 하게 되면 클래스명을 제거할수있다.
클래스를 찾기위한 경로이다.
JVM이 코드를 실행할때 클래스 파일을 찾기 위한 경로가 필요한다.
JVM은 CLASSPATH 경로를 참조하여 클래스들의 위치를 참조하게 된다.
.java 파일을 컴파일한후에 .class 로 생긴 파일을 실행시킬때 파일들을 찾기위해 클래스 패스에 지정된 경로를 사용한다.
클래스 패스지정 두가지 방법
1. CLASSPATH 환경변수
2. -classpath 옵션 사용
1. CLASSPATH 환경변수
윈도우 기준)
고급 시스템 설정(컴퓨터 시스템 변수 설정)에서 CLASSPATH를 추가 해줄수있다.
JVM이 시작될때 클래스 로더는 시스템 변수에 저장되어있는 환경변수를 보고 해당 클래스들을 메모리에 로딩한다.
2. -classpath 옵션 사용
java runtime시에 -classpath 옵션을 사용하요 클래스 파일들의 경로를 잡아줄수 있다.
컴파일(javac)와 프로그램실행(java) 명령어를 사용할때 유용하다.
class Customer{
public void print(){
System.out.println("Customer");
}
}
public class Shop {
public static void main(String[] args) {
Customer c = new Customer();
c.print();
}
}
Test폴더에 있는 Shop.java 파일이 있다고 가정한다면
컴파일후 C:\Test\Shop.class , Customer.class가 존재하게 된다.
Customer.class 파일을 C:\Test\lib 아래로 파일을 옮긴후
명령어를 java Shop 사용하게 된다면 에러가 난다.
lib안의 Customer.class 파일을 못찾기 때문이다.
명령어 : java -classpath ".;lib" Shop를 하면 실행결과가 잘 나온다.
".lib"에서
. : 현재 디렉토리에서 클래스를 찾겠다.
; : 경로를 구분해주는 구분자
lib : 현재 디렉토리에 없으면 현재 디렉토리의 하위 디렉토리중 lib에서 클래스를 찾겠다.
접근제어자는 정보 은닉을 위해 접근 제어자를 제공하고 있다.
클래스,메서드,변수,인스턴스를 선언할때 사용한다.
4가지 접근 제어자를 제어한다.
1. private
2. public
3. default
4. protected
JAVA] Enum은 무엇인가? (0) | 2021.02.06 |
---|---|
JAVA] 예외처리 하는 방법 (0) | 2021.01.15 |
자바 Dispatch란? ( static , dynamic , double Dispatch ) (0) | 2020.12.25 |
자바 상속이란? (0) | 2020.12.25 |
[JAVA] 클래스란? (0) | 2020.12.16 |