728x90

모듈

  • 여러 패키지와 이미지 등의 자원을 모아 놓은 컨테이너
  • JDK 9부터 자바 API의 모든 클래스들(자바 실행 환경)을 패키지 기반에서 모듈들로 완전히 재구성함
  • 응용프로그램 역시 여러 개의 모듈로 분할하여 작성 가능
  • 클래스의 패키지화 → 패키지의 모듈화
  • 자바 API를 여러 모듈로 분할하여 응용프로그램의 실행에 적합한 모듈들로만 실행 환경 구축
    • 메모리 등의 자원이 열악한 작은 소형 기기에 꼭 필요한 모듈로만 구성하여 실행하기 위함

💡 모듈화는 복잡한 개념이므로 메모리 환경이 충분한 경우에는 굳이 모듈화를 하지 않아도 됨

  • 모듈 파일에는 자바 API 의 패키지와 클래스들이 들어 있음
  • jmod 명령을 이용하여 모듈 파일에 들어 있는 패키지를 풀어 낼 수 있음

 

  • java.util.Scanner : 경로명으로 구성
  • java.util : 패키지명
  • Scanner : 클래스명

패키지

: 서로 관련된 클래스와 인터페이스의 컴파일 된 클래스 파일들을 하나의 디렉터리에 묶어 놓은 것


패키지의 특징

  • 패키지 계층 구조
    • 관련된 클래스 파일들을 하나의 패키지로 계층화하여 관리 용이
  • 패키지별 접근 제한
    • 패키지 별로 접근 권한 가능
  • 동일한 이름의 클래스와 인터페이스의 사용 가능
    • 서로 다른 패키지에 같은 이름의 클래스와 인터페이스 존재 가능
  • 높은 소프트웨어 재사용성

import

  • 다른 패키지에 작성된 클래스를 사용하기 위해

import 사용 ❌

  • 해당 클래스 사용 시, 전체 경로명을 명시해야함
public calss ImportEx {
        public static void main(String[] args) {
                java.util.Scanner scanner = new java.util.Scanner(System.in);
        System.out.println(scanner.next());
        }
}

 

  • import 사용
    • 소스 코드 맨 앞에 사용하려는 패키지 명시
    • └ 소스 코드에선 클래스명만 명시하면 된다.
import java.util.Scanner;
public class ImportEx {
        public static void main(String[] args){
                Scanner scanner = new Scanner(System.in);
        }
}

💡  현재 패키지 내의 모든 클래스 포함
import java.util.*


디폴트 패키지

: 현재 디렉터리를 뜻함

  • package 선언문 없이 만들어진 클래스의 패키지

패키지 생성

패키지 선언

package [패키지명]

  • 컴파일한 클래스 파일을 패키지명의 디렉터리에 저장하라는 지시
  • 소스 파일의 첫 줄에 선언
package UI; //Toos 클래스를 컴파일하여 UI 패키지에 저장
public class Tools{
...
} //Tools 클래스의 경로명은 UI.Tools

Ex1

  • Calculator.java
package lib;

public abstract class Calculator {
    public abstract int add(int a, int b);
    public abstract int subtract(int a, int b);
    public abstract  double average(int[] a);
}

 

  • GoodCalc.java
package app;
import lib.Calculator;

public class GoodCalc extends Calculator{
    @Override
    public int add(int a, int b) {
        return a + b;
    }

    @Override
    public int subtract(int a, int b) {
        return a - b;
    }

    @Override
    public double average(int[] a) {
        double sum = 0;
        for (int i = 0; i < a.length; i++)
            sum += a[i];
        return sum/a.length;
    }
    public static void main(String[] args) {
        Calculator c = new GoodCalc();
        System.out.println(c.add(3, 2));
        System.out.println(c.subtract(3,2));
        System.out.println(c.average(new int [] {2, 3, 4}));
    }
}

파일 계층 구조

 

 

 


 

 

 

모듈과 패키지

모듈

www.notion.so

 

아래 노션 페이지에 자바 공부 내용에 대해 업로드 합니다!

수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑

 

 

JAVA 이론 정리

주석 단축키 주석 처리하고 싶은 부분을 블록 처리하고 ‘Ctrl+Shift+ / ’를 누르면 /* */로 주석 처리가 됩니다. 주석을 해제하고 싶은 부분을 블록 처리하고 ‘ Ctrl+Shift+ \ (원 표시 혹은 역슬러시)

www.notion.so

 


개발 환경

Intellij

 

작성 플랫폼

Notion

 

728x90

'🧑‍💻 Language > Java' 카테고리의 다른 글

[Java] 13. GUI  (0) 2021.06.01
[Java] 12. 모듈화와 패키지 응용  (2) 2021.06.01
[Java] 10. 인터페이스  (0) 2021.05.26
[Java] 9. 추상 메소드와 추상 클래스  (0) 2021.05.16
[Java] 8. 메소드 오버라이딩  (0) 2021.05.16