패키지
관련있는 클래스들을 하나로 묶는 것
- 서로 관련된 클래스를 하나의 단위로 모을 수 있음.
- 세밀한 접근 제어 구현 가능 (ex. 패키지 안의 클래스들을 패키지 안에서만 사용하도록 선언 가능함. 그럼 패키지 외부에서는 클래스를 사용할 수 없음. 즉, 클래스들이 캡슐화될 수 있는 방법임.)
- 이름 충돌 피함 -> 자바에서는 모든 클래스가 서로 다른 이름을 가져야 함. 하지만 패키지만 다르면 클래스 이름이 같아도 상관 없음.
패키지 종류
1. 내장 패키지 : 자바 기본 제공 패키지 (ex. lang, util, awt, javax, swing, net, io, sql)
2. 사용자 정의 패키지 : 사용자 정의 패키지
패키지 선언
* 패키지 선언은 코드의 무조건 맨 첫 줄에 선언
- Circle 클래스를 graphics 패키지에 속하게 하는 코드
package graphics;
public class Circle {
double radius;
}
- pkg1 패키지 안에 pkg2 패키지를 속하게 하는 코드
package pkg1.pkg2;
이클립스에서 패키지 만들기
1. File - New - Java Project => 'test' 이름의 프로젝트 생성
2. src 폴더 마우스 오른쪽 - New - Pakage => 'graphics' 패키지 이름 입력
3. graphics 패키지 마우스 오른쪽 - New - Class => 사용자가 원하는 클래스 생성
패키지 안 클래스 사용하기
1. 완전한 이름으로 참조하기 (잘 쓰지 않는 클래스를 사용할 때)
- graphics 패키지 안에 있는 Rectangle 클래스의 정식 이름은 graphics.Rectangle 임.
graphics.Rectangle myRect = new graphics.Rectangle();
2. 원하는 패키지 멤버만 포함하기 (특정 클래스만 사용할 때)
- 외부 패키지의 특정 멤버를 import 하면, 클래스 이름만 사용하여 참조 가능함.
import graphics.Rectangle;
Rectangle myRect = new Rectangle();
3. 전체 패키지 포함하기 (대부분의 클래스를 사용할 때)
- 별표 문자를 이용함
import graphics.*; // 패키지의 모든 클래스 포함
Rectangle myRect = new Rectangle();
*단, 똑같은 이름을 가진 클래스를 포함한 패키지들을 사용할 때는 1번의 방법을 이용해야 함.
import A;
import B;
A.Order o1 = new A.Order();
B.Order o2 = new B.Order();
정적 import 문장
- 클래스 안에 정의된 정적 상수, 정적 메소드를 사용하는 경우
ex. java.lang.Math 클래스 안에 정적 상수 PI와 정적 메소드 sin(), cos(), tan() 가 정의되어 있음.
1. 정적메소드와 정적상수 앞에 클래스 이름 붙이기
double r = Math.cos(Math.PI * 3);
2. 정적 import 문장 사용하기
import static java.lang.Math.*;
double r = cos(PI * 3);
예제 코드
//lib 패키지 클래스
package lib;
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
//main 패키지 안 클래스
package main; //main 패키지 안에 포함되어 있음
import lib.*; // lib 패키지 안에 있는 모든 멤버 사용 가능하게 함
public class PackageTest {
public static void main(String[] args) {
Calculator obj = new Calculator();
System.out.println(obj.add(100, 200));
}
}
출력 결과
300
'JAVA' 카테고리의 다른 글
[JAVA] JUnit (0) | 2024.06.27 |
---|---|
파일 입출력 - 객지설 13주차 (0) | 2024.06.01 |
상속과 구성 - 객지설 12주차 (0) | 2024.05.27 |
컬렉션/ArrayList/HashSet - 객지설 11주차 (0) | 2024.05.23 |
제네릭 - 객지설 10주차 (0) | 2024.05.17 |