Week 07

2022. 7. 23. 22:00
728x90

목표

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

학습할 것

  • package 키워드
  • import 키워드
  • 클래스패스
  • CLASSPATH 환경변수
  • classpath 옵션
  • 접근지시자

1. package 키워드

패키지란, 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적을 관리할 수 있다. 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하므로, 자신만의 패키지 체계를 유지함으로써 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다.
package 패키지명;

2. import 키워드

소스코드를 작성할 때 다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다. 하지만, 매번 패키지명을 붙여서 작성하기란 여간 불편한 일이 아니다. 클래스의 코드를 작성하기 전에 import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해주면 소스코드에 사용되는 클래스이름에서 패키지명은 생략할 수 있다. import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다. 컴파일 시에 컴파일러는 import문을 통해 소스파일에 사용된 클래스들의 패키지를 알아 낸 다음, 모든 클래스이름 앞에 패키지명을 붙여 준다.
import 패키지명.클래스명;
		또는
import 패키지명.*;

3. 클래스패스

클래스패스는 컴파일러나 JVM 등이 클래스의 위치를 찾는데 사용되는 경로이다.
java -classpath ".;lib" ClasspathDemo2

4. CLASSPATH 환경변수

시스템의 속성을 기록하고 있는 변수라는 IT용어로, OS의 셸 등에 설정되어 있다. 변수의 이름과 의미는 미리 정해져 있기 때문에 환경변수를 읽으면 시스템의 설정을 어느 정도 알 수 있다. 사용자가 의도적으로 변환할 수 있는 환경변수도 많으며, 특히 웹 브라우저에서는 자신의 정체를 숨길 목적으로 브라우저 등의 변수를 변환하는 경우도 있다.
*Java에서는 클래스패스로 환경변수 CLASSPATH를 사용한다.

5. classpath 옵션

java 명령어 뒤에 -classpath를 입력하면 클래스패스를 설정할 수 있다. 그리고 클래스경로는 **큰따옴표(“”)**안에 입력한다. 클래스경로는 **콜론(:)**을 사용해서 여러개 입력할 수 있다. 예를 들어 현재 경로, hide 디렉토리, good 디렉토리를 클래스경로로 지정하려면 “.:hide:good” 을 입력한다. 지금까지 설명한 -classpath 옵션은 java, javac 명령어에 모두 사용할 수 있다.
java -classpath ".:hide" Main

6. 접근지시자

클래스를 설계할 때 외부클래스에서 접근 가능한 멤버와 접근이 불가능한 멤버로 구분해서 필드, 생성자, 메서드를 설계하는 것이 바람직하다. 그 이유는 특정 객체의 생성을 막기 위한 생성자 호출 제한이 가능하고, 객체의 특정 데이터를 보호하기 위해 필드에 접근 제한할 수 있고, 특정 메소드 호출을 막을 수 있기 때문이다.
------------------------------------
public: 누구나 접근

public class Main(){
...
}
------------------------------------
protected: 같은 패키지 또는 자손 클래스의 접근

protected class Main(){
...
}
------------------------------------
default: 같은 패키지만 접근 

class Main(){
...
}
------------------------------------
private: 해당 클래스 내에서만 접근

private class Main(){
...
}
------------------------------------

'Java & Spring > WhiteShip Study' 카테고리의 다른 글

Week 09  (0) 2022.08.06
Week 08  (0) 2022.07.30
Week 06  (0) 2022.07.16
Week 05  (0) 2022.07.09
Week 04  (0) 2022.07.02

BELATED ARTICLES

more