오식랜드
[java] 패키지(Package)와 모듈(Module) 본문
반응형
패키지의 필요성
- 서로 관련 있는 클래스를 분류하여 관리 또는 접근을 용이하게 한다.
- 기능은 다르나 이름은 같은 클래스가 존재할 경우, 패키지로 구분 가능해진다.
- 호출 시에도 패키지 명이 앞에 붙어 구분에 용이하다
패키지
- 계층적으로 구성
- 계층 구분은 도트(.)
- 패키지 별 접근 제한 가능
- 서로 다른 패키지에 동일한 이름의 클래스 사용 가능
- ex) java.util.Scanner : java.util = 패키지 명 / Scanner = 클래스 명
모듈 (Module)
- 여러 패키지, 이미지 등의 자원을 모아놓은 컨테이너
- 모듈 > 패키지 > 클래스 구조
- 메모리 활용에 효율적
- jmods 폴더에 자바 모듈이 존재
주요 모듈과 패키지
- java.base 모듈
- java.lang
- 패키지 명 없이 사용 가능
- 문자열, 수학, 표준 입출력 등 지원
- ex) System , String, Math 등
- java.util
- 일반적인 유틸리티
- 날짜, 시간, 벡터, 해시맵 등
- ex) Scanner, Collection 등
- java.io
- 입출력 지원
- java.lang
- java.desktop 모듈 (window application에서 사용)
- java.awt : 기본적인 GUI
- java.swing : 추가적인 GUI
사용법
방법 1
- 필요 시 패키지 명을 포함한 클래스 이름 사용
- 온전한 클래스 명을 사용하여 매번 언급이 필요할 땐 번거롭다
- 1회성 사용에 좋다
java.util.Scanner s;
s = new java.util.Scanner(System.in);
방법2
- 소스 코드 상단에 import 선언문 사용
- import 이후에는 패키지 경로를 생략하고, 클래스 이름으로만 조작이 가능하다
// 명시된 클래스만 import
import java.util.Scanner;
// 지정한 패키지 내의 모든 class import
// 하위 패키지는 X
import java.util.*;
Scanner s;
s = new Scanner(System.in);
*예외
- java.lang 패키지는 별도의 선언 없이 바로 클래스 이름으로 접근이 가능하다
반응형
'dev-log > java' 카테고리의 다른 글
[java] 배열 (0) | 2023.10.16 |
---|---|
[java] 난수 생성 (0) | 2023.10.16 |
[java] 생성자 (0) | 2023.10.16 |
[java] 접근 제한 (0) | 2023.10.16 |
[java] 메서드 오버로딩 (Method Overloading) (0) | 2023.10.16 |
Comments