- 해당 내용은 백기선 님의 자바 온라인 스터디 공부 및 제출 목적
-> https://github.com/whiteship/live-study/issues/7
목표
자바의 패키지에 대해 학습하세요.
학습할 것 (필수)
- package 키워드
- import 키워드
- 클래스패스
- CLASSPATH 환경변수
- -classpath 옵션
- 접근지시자
1. package 키워드
1.1 Package 란?
- 클래스의 묶음 또는 물리적으로 하나의 디렉토리(폴더)를 의미.
- 서로 관련되어 있는 것을 한 곳으로 묶어놓음으로써 효율적으로 관리할 수 있음.
- 모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있다. 이 둘을 합쳐야 완전하게 하나의 클래스를 표현한다고 할 수 있으며 FQCN(Fully Qualified Class Name)이라 한다.
- 소스에서 가장 첫 줄에 있으며, 패키지 선언은 클래스 하나에 하나만 있어야 한다.
- 클래스 뿐만 아니라 인터페이스도 포함 가능.
상위패키지.하위패키지.클래스
example)
com.onlinestudy.Package.java
--> Package 클래스가 com.onlinestudy 패키지에 존재
--> 파일시스템에서는 com/onlinestudy/Package.java
1.2 빌트-인 패키지(Built-in Package)
- Java 에서는 개발자들이 사용할 수 있도록 여러 많은 패키지 및 클래스를 제공.
- 가장 많이 쓰이는 패키지로는 java.lang 과 java.util 이 있다.
- 해당 패키지를 따로 import를 하여 사용하지 않는다.(기본적인 패키지는 Java가 자동으로 import 하여 해당 클래스를 불러온다.)
import java.lang.String;
import java.lang.System;
public class Main{
public static void main(String[] args){
String str = "this is from java.lang.String";
System.out.println(str);
}
}
2. import 키워드
- 다른 패키지의 클래스를 사용하기 위해서는 패키지명이 포함된 클래스 이름을 사용해야 한다.
- 각각의 클래스마다 해당 패키지의 이름을 붙여서 개발하기에는 비효율적이기 때문에 Java에서는 import 키워드를 제공한다.
- import 키워드는 컴파일러에게 class파일의 패키지에 대한 정보를 미리 제공.
- import 키워드는 모든 소스 파일에서 package 문 다음에, 그리고 클래스 선언문 이전에 위치.
- package 키워드와 달리 하나의 소스파일 안에 여러번 선언이 가능.
- java에서 가장 많이 사용되는 java.lang 패키지에 대해서는 import 키워드를 사용하지 않아도 사용 가능하다.
package com.study;
public class Banana{
// 패키지와 클래스를 모두 기술하는 방법
// import 사용 안하는 경우
com.onlinestudy.Fruit fruit = new com.onlinestudy.Fruit();
}
package com.study;
import com.onlinestudy.Fruit
public class Apple{
// import 사용하는 경우
Fruit fruit = new Fruit();
}
3. 클래스 패스
- 컴파일러나 JVM이(누가) 프로그램을 실행할 때(언제), 클래스파일을 찾는 데(왜) 클래스 패스(기준이 되는 파일 경로)(무엇을)를 사용한다.
- 따로 지정하지 않으면 기본적으로 현재 디렉토리가 클래스 패스로 지정.
- 세미콜론(;)을 구분자로 하여 여러 개의 경로를 지정 가능.
- 클래스 패스 지정 방법
- 클래스 패스 환경변수
- 시스템에서 어디서든 참조 할 수 있게 환경변수로 설정. - -classpath 옵션
- cmd(terminal)에서 자바 컴파일 또는 실행시 명령어를 통해 임의로 지정.
4. CLASSPATH 환경변수
- 자신의 로컬PC에서 시스템 변수 설정을 통해 지정 가능.
- JVM이 시작될 때 JVM의 Class Loader(클래스 로더)는 이 환경 변수를 호출.
- 환경 변수에 설정되어 있는 디렉토리가 호출되면서 디렉토리에 있는 클래스들이 먼저 JVM에 로드.
5. -classpath 옵션
- javac <options> <source files> 의 형식을 가진다.
- Java 컴파일러가 컴파일 시, 필요로 하는 참조 클래스 파일을 찾기 위해 경로를 지정.
6. 접근지시자
- Java 에서는 외부 클래스에서 접근하는 범위를 접근 지시자(=접근 제한자, 접근 제어자)를 통해 제한.
- public, protected, default, private
- Public
- 모든 패키지에서 아무런 제한 없이 호출.
- 보통 생성자 또는 필드, 메소드가 public 이라면, 클래스도 public 접근 제한을 가짐. - Protected
- 같은 패키지에 속하는 클래스에서 호출.
- 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 호출 가능. - Default
- 같은 패키지에서는 제한 없이 호출.
- 접근 제한자를 생략한 경우.
- Protected와 다르게 다른 패키지에서는 호출 불가능. - Private
- 클래스 내부에서만 호출.
접근지시자(접근제한자) | 내부 | 동일패키지 | 하위 클래스 | 클래스 외 영역 |
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
참고
'Study > Java(Online-Study)' 카테고리의 다른 글
9주차 과제: 예외 처리 (0) | 2021.08.07 |
---|---|
8주차 과제: 인터페이스 (0) | 2021.07.19 |
6주차 과제: 상속 (0) | 2021.07.17 |
5주차 과제: 클래스 - 이론(1) (0) | 2021.06.27 |
4주차 과제: 제어문 - 이론(1) (0) | 2021.06.20 |