자바의 패키지는 폴더 구조와 유사합니다. 이후에 배울 접근 제어 지시자와 결합하여 캡슐화, 정보 은닉이라는 것에 대해 배우기 위해서는 그전에 패키지에 대해서 배워야 합니다.
자바의 패키지는 연관된 것들끼리의 고유 공간으로, 일반적인 폴더 구조와 다르게 이후에 배우는 접근 제어 지시자의 개념과 연결되어 자바 소스의 캡슐화, 모듈화를 할 수 있습니다. (이후에 배웁니다)
ㅤ
package를 프로젝트를 통해 느껴봅시다.
먼저 실습도구에 있는 프로젝트를 다운로드해봅시다.
새로운 폴더를 만든 후, 다운로드한 파일을 압축을 풀어 새로운 폴더를 기준으로 Intellij 에디터로 프로젝트를 열면 다음과 같은 모습일 겁니다.
에디터에서 인식하는 해당 프로젝트의 패키지의 시작은 codelatte부터 시작합니다. 그리고 폴더와 패키지 이름은 동일해야 합니다.
Main.java 파일은 codelatte 패키지 내에 있으므로 package 키워드와 이름이 작성되어 있습니다.
codelatte 하위로 car 패키지가 존재하며 car 패키지 내에 있는 자바 파일들은 package codelatte.car; 로 선언됩니다. 그리고 반드시 폴더의 구조와 패키지의 경로 구조를 동일하게 해야 합니다. 예시로 Accelerator가 car 패키지 내에 존재하는데 package codelatte; 라던가 package coffeelatte; 이러면 안 됩니다.
*주의할 점은 package codelatte와 package codelatte.car는 서로 다른 패키지입니다. 하위에 있다고 같은 패키지 내에 속해있다고 생각하면 안 됩니다.
ㅤ
패키지 폴더에 마우스 포인터를 놓고 오른쪽 버튼을 클릭하면 New -> Package 메뉴가 보이며 클릭해봅시다.
패키지를 작성하도록 입력창이 노출됩니다.
저는 test 패키지를 추가하겠습니다. (패키지명은 소문자로 작성해야 합니다)
패키지를 추가하면 프로젝트 구조에 test 패키지가 추가됩니다.
test 패키지 내에 자바 파일을 하나 추가해봅시다.
저는 TestClass를 추가했습니다. 에디터에서는 자동으로 package codelatte.test;를 작성해 줍니다. 만약에 에디터를 사용하지 않는다면 직접 폴더를 만들고 자바 파일과 클래스를 만들어준 후 자바파일 내에 package codelatte.test;를 작성해 주어야 합니다.
ㅤ
서로 다른 패키지에 있는 자바의 클래스를 참조하려면 import 키워드가 작성되어 있어야 합니다.
Main 클래스와 Car 클래스는 서로 다른 패키지 내에 있으므로 Main 클래스 내에서 Car 참조 자료형 변수의 선언과 Car 인스턴스를 사용하려면 Car 클래스가 있는 패키지 경로를 import 해야 합니다. 예시로 Car 클래스는
package codelatte.car에 있으므로 import codelatte.car.Car;를 작성하여 Car 클래스를 가져온다고 명시해야 합니다.
만약에 Car 클래스를 import 하지 않으면 Main 클래스 입장에서 Car가 무엇인지 모르기 때문에 그림에 보이는 것처럼 에러가 발생합니다.
Car 클래스를 import 하는 방법은 Car 마우스 포인터를 놓고 오른쪽 버튼을 클릭하면 Show Context Actions 메뉴가 보입니다. 이것을 클릭해봅시다.
그러면 새로운 메뉴가 노출되며 import class를 클릭하면 됩니다.
이러면 자동으로 Car 클래스의 위치를 찾아 import codelatte.car.Car; 를 작성해줍니다.
*일반적으론 마우스를 사용하는 방식이 아닌 단축키로 클래스를 import 합니다. 이 부분은 사용하는 운영체제에 따른 단축키 설정과 실행 환경에 따라 다르므로 별도로 설명드리지는 않습니다.
자바 파일을 폴더 구조로 할 수 있습니다.
자바의 패키지는 폴더 구조와 유사합니다. 이후에 배울 접근 제어 지시자와 결합하여 캡슐화, 정보 은닉이라는 것에 대해 배우기 위해서는 그전에 패키지에 대해서 배워야 합니다.
자바의 패키지는 연관된 것들끼리의 고유 공간으로, 일반적인 폴더 구조와 다르게 이후에 배우는 접근 제어 지시자의 개념과 연결되어 자바 소스의 캡슐화, 모듈화를 할 수 있습니다. (이후에 배웁니다)
ㅤ
package를 프로젝트를 통해 느껴봅시다.
먼저 실습도구에 있는 프로젝트를 다운로드해봅시다.
새로운 폴더를 만든 후, 다운로드한 파일을 압축을 풀어 새로운 폴더를 기준으로 Intellij 에디터로 프로젝트를 열면 다음과 같은 모습일 겁니다.
에디터에서 인식하는 해당 프로젝트의 패키지의 시작은 codelatte부터 시작합니다. 그리고 폴더와 패키지 이름은 동일해야 합니다.
Main.java 파일은 codelatte 패키지 내에 있으므로 package 키워드와 이름이 작성되어 있습니다.
codelatte 하위로 car 패키지가 존재하며 car 패키지 내에 있는 자바 파일들은 package codelatte.car; 로 선언됩니다. 그리고 반드시 폴더의 구조와 패키지의 경로 구조를 동일하게 해야 합니다. 예시로 Accelerator가 car 패키지 내에 존재하는데 package codelatte; 라던가 package coffeelatte; 이러면 안 됩니다.
*주의할 점은 package codelatte와 package codelatte.car는 서로 다른 패키지입니다. 하위에 있다고 같은 패키지 내에 속해있다고 생각하면 안 됩니다.
ㅤ
패키지 폴더에 마우스 포인터를 놓고 오른쪽 버튼을 클릭하면 New -> Package 메뉴가 보이며 클릭해봅시다.
패키지를 작성하도록 입력창이 노출됩니다.
저는 test 패키지를 추가하겠습니다. (패키지명은 소문자로 작성해야 합니다)
패키지를 추가하면 프로젝트 구조에 test 패키지가 추가됩니다.
test 패키지 내에 자바 파일을 하나 추가해봅시다.
저는 TestClass를 추가했습니다. 에디터에서는 자동으로 package codelatte.test;를 작성해 줍니다. 만약에 에디터를 사용하지 않는다면 직접 폴더를 만들고 자바 파일과 클래스를 만들어준 후 자바파일 내에 package codelatte.test;를 작성해 주어야 합니다.
ㅤ
서로 다른 패키지에 있는 자바의 클래스를 참조하려면 import 키워드가 작성되어 있어야 합니다.
Main 클래스와 Car 클래스는 서로 다른 패키지 내에 있으므로 Main 클래스 내에서 Car 참조 자료형 변수의 선언과 Car 인스턴스를 사용하려면 Car 클래스가 있는 패키지 경로를 import 해야 합니다. 예시로 Car 클래스는
package codelatte.car에 있으므로 import codelatte.car.Car;를 작성하여 Car 클래스를 가져온다고 명시해야 합니다.
만약에 Car 클래스를 import 하지 않으면 Main 클래스 입장에서 Car가 무엇인지 모르기 때문에 그림에 보이는 것처럼 에러가 발생합니다.
Car 클래스를 import 하는 방법은 Car 마우스 포인터를 놓고 오른쪽 버튼을 클릭하면 Show Context Actions 메뉴가 보입니다. 이것을 클릭해봅시다.
그러면 새로운 메뉴가 노출되며 import class를 클릭하면 됩니다.
이러면 자동으로 Car 클래스의 위치를 찾아 import codelatte.car.Car; 를 작성해줍니다.
*일반적으론 마우스를 사용하는 방식이 아닌 단축키로 클래스를 import 합니다. 이 부분은 사용하는 운영체제에 따른 단축키 설정과 실행 환경에 따라 다르므로 별도로 설명드리지는 않습니다.
자바 파일을 폴더 구조로 할 수 있습니다.