패키지 : 관련있는 클래스/인터페이스들의 컴파일된 .class 파일들을 하나의 디렉토리에 묶어 놓는 것
패키지의 필요성
- 여러 개발자가 공동 작업을 할 때, 클래스의 이름이 겹칠 수 있음.
- 하나로 합칠때, 오류 발생
->패키지 개념을 이용해 이를 해결
- 하나로 합칠때, 오류 발생
모듈 : 여러 패키지와 자원들을 묶어 놓은 컨테이너
- 자바 API를 여러 모듈을(99개) 로 분할하여 응용프로그램 실행에 적합한 모듈들로만 실행환경을 구축할 수 있게함.
JDK의 java.base 모듈에 있는 패키지와 클래스
import java.util.Scanner;
- java.util : 패키지 이름
- Scanner : 클래스 이름
- import : 패키지를 사용하기 위한 import문
Import
- import를 사용하는 경우 : 소스의 시작 부분에 사용하려는 패키지 명시
- 특정 클래스의 경로명을 입력해 특정 클래스 사용
- " 클래스의 패키지 . * " 을 입력해 패키지 내 여러 클래스 사용
- import 를 사용하지 않는 경우 : 소스 내에 패키지 및 클래스의 전체 경로명을 입력
//import문을 사용하지 않은 경우
public class ImportExample1{
public static void main(String[] args){
java.util.Scanner scnr = //소스 내에 패키지 이름과 클래스 이름의
new java.util.Scanner(System.in); // 전체 경로명을 써줘야 함
}
}
//import문을 사용하는 경우
//소스의 시작 부분에 사용하려는 패키지 명시
import java.util.Scanner;//특정 클래스의 경로명. 특정 클래스만 사용
public class ImportExample2 {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
}
}
import java.util.*;//패키지 내의 모든 클래스 포함
public class ImportExample3 {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
}
}
- 클래스의 이름이 겹치는 경우 : import문을 사용하지 않고 , 소스내에 패키지 및 클래스의 전체 경로명을 입력하여 관리
패키지 만들기
- package 패키지명;
- 컴파일한 클래스 파일(결과)을 패키지에 저장
- 밑에 소스파일이 어디있는 나타내는 게 아님
- 소스파일 첫 줄에 선언
package A;//turn 클래스를 컴파일하여 A패키지에 저장
public class turn{}//이제 이 클래스의 경로명은 A.turn
- turn클래스의 경로명은 A.turn
- 다른 클래스에서 turn클래스를 사용하기 위해서는 import A.turn
package B;
import A.turn;//A 패키지에 있는 turn 클래스 사용
public class drive{
public void toRight(){
turn t = new turn();//turn 인스턴스 선언 및 생성
//A.turn t = new turn(); import문을 사용하지 않은 경우
}
}
디폴트 패키지
- 패키지 선언문이 없이 만들어진 클래스의 패키지
- 디폴트 패키지의 위치는 현재 디렉토리
패키지의 특징
- 패키지 계층 구조 : 클래스 파일 관리 용이
- 패키지별 접근 권한 : 패키지 별로 접근 권한 가능 ( 디폴트 접근 지정자 )
- 동일한 이름의 클래스 사용가능
'JAVA' 카테고리의 다른 글
[Java.4-3] 자바의 주요 클래스 : Object 클래스 (0) | 2022.04.19 |
---|---|
[Java.4-2] 패키지 2 : 자바의 주요 패키지 (0) | 2022.04.19 |
[Java.3-5] 인터페이스 (0) | 2022.04.16 |
[Java.3-4] 추상 메소드와 추상 클래스 (0) | 2022.04.16 |
[Java.3-3] 메소드 오버라이딩 (0) | 2022.04.16 |