-
[Java 자바] 6. 클래스 ⑤ 패키지Programming/Java 2022. 7. 31. 15:38반응형
6-12. 패키지
폴더를 만들어 파일을 저장 관리하듯, 패키지를 만들어 클래스를 저장 관리
- 패키지는 클래스를 유일하게 만들어주는 식별자 역할을 함 (클래스명이 같더라도 패키지가 다르면 다른 클래스로 인식)
- 클래스 이동시에는 패키지도 함께 이동해야 정상적으로 사용 가능6-12-1. 패키지 선언
패키지는 클래스 컴파일 과정에서 자동적으로 생성되는 폴더
package 상위패키지.하위패키지; public class ClassName {...}
[ 패키지 Naming 규칙 ]
- 숫자로 시작해서는 안 되고, _, $ 를 제외한 특수문자는 사용 불가
- java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용 불가 (java.util)
- 모두 소문자로 작성하는 것이 관례
- 패키지간 중복 방지를 위해 회사의 도메인 이름으로 패키지를 만듦(도메인 기관에서 중복을 허용하지 않으므로)
- 도메인 역순으로 패키지 이름을 지어줌(포괄적인 이름이 상위 패키지가 되도록 하기 위함)
- 마지막에는 프로젝트 이름을 붙여주는 것이 관례com.samsung.projectname com.hyundai.projectname com.lg.projectname
6-12-2. import 문
같은 패키지 내의 클래스들끼리는 다른 클래스를 사용할 수 있지만,
다른 패키지의 클래스를 사용하고 싶을 경우 아래 2가지 방법을 따름1) 패키지와 클래스를 모두 기술
- 패키지 이름이 길거나 사용해야할 클래스 수가 많다면 전체 코드가 난잡해질 수 있음
// com.hankook 패키지에 소속된 Tire클래스를 이용해 필드를 선언하고 객체를 생성 package com.mycompany; public class Car { com.hankook.Tire tire = new com.hankook.Tire(); //[클래스타입명] [필드명] = [객체 생성] }
2) import 문 사용
- 패키지를 사용할 수 있게 패키지 자체를 import 할 수 있음
package com.mycompany; import com.hankook.Tire; // import com.hankook.*; 를 사용하면 com.hankook에 있는 모든 클래스를 임포트할 수 있음 public class Car{ Tire tire = new Tire(); } // 단, 지정된 패키지의 하위 패키지는 import 대상이 아님 // 만약 하위 패키지에 있는 클래스도 사용하고 싶다면 import문을 하나 더 작성해야 함 import com.mycompany.*; // 하위에 있는 프로젝트 패키지는 import되지 않음 import com.mycompany.project.*; // 하위에 있는 프로젝트 패키지 import
- 보다 간결하게 사용 가능하나, 서로 다른 패키지에 동일한 클래스 이름이 존재하고 두 패키지가 모두 import되었을 땐 컴파일 오류 발생
package test; import test2.*; import test3.*; public class Test { public static void main(String[] args) { Tire tire = new Tire(); // 컴파일 오류 발생 } }
package test; import test2.*; import test3.*; public class Test { public static void main(String[] args) { test2.Tire tire = new test2.Tire(); // 명시해줘야 함 } }
❗️이클립스에서는 ctrl + shift + o 키를 누르면 필요한 패키지를 자동으로 import 해줌
반응형'Programming > Java' 카테고리의 다른 글
[Java 자바] 7. 상속 ① 클래스 상속, super, 메소드 오버라이딩 (0) 2022.08.07 [Java 자바] 6. 클래스 ⑥ 접근 제한자 (public, protected, default, private), Getter/Setter, 어노테이션 (0) 2022.07.31 [Java 자바] 6. 클래스 ④ this, static, final, static final (0) 2022.07.31 [Java 자바] 6. 클래스 ③ 필드, 생성자, 메소드 (0) 2022.07.31 [Java 자바] 6. 클래스 ② 클래스 선언, 객체 생성 (0) 2022.07.31