JaeWon's Devlog
article thumbnail
반응형

- 해당 내용은 백기선 님의 자바 온라인 스터디 공부 및 제출 목적

   -> https://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 옵션
  • 접근지시자

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.langjava.util 이 있다.

- 해당 패키지를 따로 import를 하여 사용하지 않는다.(기본적인 패키지는 Java가 자동으로 import 하여 해당 클래스를 불러온다.)

https://ahnyezi.github.io/java/javastudy-7-package/

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

참고

- https://velog.io/@zayson/%EB%B0%B1%EA%B8%B0%EC%84%A0%EB%8B%98%EA%B3%BC-%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-Live-Sutdy-7%EC%A3%BC%EC%B0%A8-%ED%8C%A8%ED%82%A4%EC%A7%80

- https://kils-log-of-develop.tistory.com/430

반응형

'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
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!