github.com/whiteship/live-study/issues/7
목표
자바의 패키지에 대해 학습하세요.
학습할 것 (필수)
- package 키워드
- import 키워드
- 클래스패스
- CLASSPATH 환경변수
- -classpath 옵션
- 접근지시자
package키워드
자바소스파일에서 클래스가 속한 경로. 서로 관련있는 클래스나 인터페이들을 하나로 묶어놓은 공간.
package를 사용하는 이유
패키지가 다른경우 같은 클래스명 사용가능.
클래스의 접근권한을 패키지 단위로 제어할 수 있다.
package명명규칙
자바파일의 가장 윗줄에 위치해야 한다.
패키지명과 자바파일이 속한 경로명은 동일해야 한다.
소문자로 작성되어야한다.
보통 도메인과 동일하게 작성한다. (그래서 패키지 시작명이 보통 com, org, java, javax)
선언방법 package com.test.common.test; 패키지키워드 유니크한주소.패키지이름.패키지이름.패키지이름;
import키워드
package가 다른데 위치한 클래스의 메서드를 호출할때, 클래스가 위치한 경로를 나타낸다.
import 명명규칙
import com.test.common.util; // util클래스의 메서드를 사용할 수 있다.
import com.text.common.*; // common 하위의 모든 클래스 import, *는 클래스단위인 경우만 사용가능
한클래스 내에서 패키지가 다른 동일한 이름의 클래스를 호출할경우,
동일한 클래스명 SubController
package com.test.common.sub1
public class SubController{
public void test(){}
}
package com.test.common.sub2
public class SubController{
public void test(){}
}
BaseController에서 SubController 호출
package com.test.common
import com.test.common.sub1.SubController
public class BaseController {
public static main(String[] args) {
//처음호출한 클래스는 import
SubController sub1 = new SubController();
//동일한 클래스명 호출했을땐 전체 경로가 표시되고 import 되지 않음
com.test.common.sub2.SubController sub2 = new com.test.common.sub2.SubController();
//System클래스는 java.lang 패키지 안에 존재지만
//java.lang패키지는 따로 import하거나 클래스앞에 패키지명을 작성하지 않아도 된다.
System.out.println();
}
}
클래스패스
클래스패스는 환경변수로서 컴파일러(JVM)가 클래스 파일들을 가져올 수 있는 위치를 알려주는데 사용된다.
즉, java를 실행하기위해 *.class파일을 찾을때 classpath에 지정된 경로를 사용한다. 자바라이브러리들이 있는 위치.
클래스패스 지정방법
1. CLASSPATH환경변수 지정
2. -classpath 옵션사용
CLASSPATH 환경변수
세미콜론(또는 콜론)으로 구분된 디렉토리 및 파일목록
classpath에 지정할 수 있는 유형 (디렉토리, zip파일, jar파일)
-classpath 옵션 (약어 -cp)
*.java 소스파일은 *.class파일로 컴파일할때 javac.exe로 컴파일가능
$ javac test.java
이때 jar 파일(자바라이브러리)이 있는 위치를 지정하는 옵션
$ javac -classpath
접근지시자
접근 허용 범위 public > default > protected > private
1. public : 어디서든 접근 가능한 인스턴스 변수 및 메소드
2. default : 접근 제어 지시자를 선언하지 않은 경우, 동일 패키지내에서 접근 허용
3. private : 선언된 클래ㅐ스 내부에서 접근 가능
4. protected : 상속 받은 클래스에 접근 허용
blog.naver.com/gmlwls8809/222153084172
'[STUDY] 자바_whiteship :)' 카테고리의 다른 글
9주차 과제: 예외 처리 (0) | 2021.01.13 |
---|---|
8주자 과제: 인터페이스 (0) | 2021.01.05 |
1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2020.12.20 |
5주차 과제: 클래스 (0) | 2020.12.14 |