반응형
1. 패키지(package)
- 같은 목적의 자료형(참조형)을 명확히 구분해서 표현하는 단위
1) 자바에서 자료형(참조형)이란?
- 클래스(Class) , 인터페이스(Interface) , 열거형(Enum)
2) 패키지를 사용하는 이유
- 패키지를 이용하여 자바 자료형을 보다 쉽게 관리하기 위해
- 클래스 관리의 용이성
3) 패키지이름 작성법 (권장)
- 그룹의 도메인을 역방향으로 나열해 작성하기
- 도메인(domain)
- 인터넷에서 개인 또는 그룹이 사용하기 위한 네트워크 식별자
- 도메인을 임대해서 사용할 수 있음
- ex) 가비아회사에서 도메인 임대
- 그룹명을 지정해 작성하기
//ex. www.(도메인)itwill.xyz
//xyz.itwill.board(그룹명) >> board와 관련된 클래스들로 작성
//이패키지 안에 있는 클래스들은 board를 만들기 위한 목적인 것!
package xyz.itwill.board;
//ex. www.(도메인)daum.net - 다음회사에 사용하는 도메인
//net.daum.board
package net.daum.board;
//ex. www.(도메인)naver.com - 네이버회사에 사용하는 도메인
//com.naver.board
package com.naver.board;
4) 패키지 사용시 주의점
- 패키지에 작성된 소스파일에는 첫번째 줄에는 사용 패키지를 반드시 설정해줘야함
- 왜?
- 소스파일에 작성된 자바 자료형이 어떤 패키지에 선언되어 있는지를 명확하게 표현하기 위해서
package 패키지명;
2. 패키지 사용 시 주의점
1) 같은 패키지 안에 있는 클래스 사용시
- import 필요 없음
- 패키지 표현 필요 없음
- 클래스만 사용하여 접근 가능
2) 다른 패키지 안에 있는 클래스 사용시
- import 필수
- import
- 다른 패키지의 클래스를 현재 자료형에서 명확하게 표현하기 위해 사용하는 키워드
- (이 클래스 가져다 쓸게요~~)
package 패키지명; //현재 작성하고 있는 클래스의 패키지
import 패키지명.클래스명; //package 명령 하단에 작성
3) 🔥주의
- 이미 import처리된 자료형과 같은 이름의 자료형은 import 처리할 수 없다.
import xyz.itwill.subject.JavaSubject;
//import xyz.uniwill.subject.JavaSubject; //=> 자료형을 사용시 패키지를 같이 표현하여 접근 가능
//패키지명.클래스명(자료형) //참조변수
xyz.uniwill.subject.JavaSubject subject3 = new xyz.uniwill.subject.JavaSubject();
subject3.display();
- 동일한 이름의 자료형이 있을 수 있으니 잘 선택해 import 해준다.
- 앞으로 동일한 이름의 클래스들이 서로 다른 클래스들에 많이 존재할 예정이라 확인 잘 해서 import해야함
3. 패키지 사용 예제
xyz.itwill.app > SubjectApp.java
xyz.itwill.subject > JavaSubject.java
xyz.itwill.subject > OracleSubject.java
xyz.uniwill.subject > JavaSubject.java
//1. 현재 SubjectApp클래스가 들어있는 패키지명
package xyz.itwill.app;
//2. import 선언
import xyz.itwill.subject.JavaSubject;
import xyz.itwill.subject.OracleSubject;
//3. 같은클래스명 import 선언x
//import xyz.uniwill.subject.JavaSubject;
public class SubjectApp {
public static void main(String[] args) {
//4.
//같은 패키지의 클래스는 패키지 표현없이 클래스만 사용하여 접근 가능 - 클래스명
CalcAgeApp calcAgeApp = new CalcAgeApp();
//5-1.
// 정석) 다른 패키지의 클래스는 패키지를 표현해야만 클래스에 접근 가능 - 패키지명.클래스명
xyz.itwill.subject.OracleSubject subject1 = new xyz.itwill.subject.OracleSubject();
subject1.display(); //아이티윌 학원이 Oracle 과정입니다.
//5-2.
//import 처리한 경우) 패키지 표현없이 클래스만 사용하여 접근 가능
OracleSubject subject2 = new OracleSubject();
subject2.display(); //아이티윌 학원이 Oracle 과정입니다.
//6.
//같은 이름의 클래스가 존재할 경우 패키지를 확인하여 클래스 사용
JavaSubject subject3 = new JavaSubject();
subject3.display(); //아이티윌 학원이 Java 과정입니다.
xyz.uniwill.subject.JavaSubject subject4 = new xyz.uniwill.subject.JavaSubject();
subject4.display(); //유니윌 학원이 Java 과정입니다.
}
}
반응형
'java > inheritance' 카테고리의 다른 글
[inheritance] 12. 키보드로 입력받아 모니터에 출력하는 프로그램 (CalcAgeApp) (0) | 2024.04.26 |
---|---|
[inheritance] 10. 접근제한자 (private, public, protected, package(default)) (0) | 2024.04.25 |
[inheritance] 9. 사원 급여 관리 프로그램 (EmployeeApp) (0) | 2024.04.24 |
[inheritance] 8. 제한자 (abstract, final, static) (0) | 2024.04.24 |
[inheritance] 7. object 클래스 (0) | 2024.04.23 |