본문 바로가기

[STUDY] 자바_whiteship :)

7주차 과제: 패키지

 

github.com/whiteship/live-study/issues/7

 

7주차 과제: 패키지 · Issue #7 · whiteship/live-study

목표 자바의 패키지에 대해 학습하세요. 학습할 것 (필수) package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 마감일시 2021년 1월 2일 토요일 오후 1시까지.

github.com

 

목표

자바의 패키지에 대해 학습하세요.

학습할 것 (필수)

  • 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

effectivesquid.tistory.com/entry/%EC%9E%90%EB%B0%94-%ED%81%B4%EB%9E%98%EC%8A%A4%ED%8C%A8%EC%8A%A4classpath%EB%9E%80?category=658328