패키지의 개념
: 하나의 클래스 안에서 같은 이름의 클래스들을 이용하기 위한 방법
이름의 충돌 방지함
디렉토리와 비슷 (a.txt가 두개 공존하려면 b폴더/c폴더에 각각 같은 이름으로 존재할 수 있음)
패키지 사용
package org.opentutorials.javatutorials.packages.example2;
public class B {
public static void main(String[] args) { A a = new A(); => 오류
}
}
=> example1 패키지에 A, B 클래스 / example2 패키지에 B, C 클래스
=> 같은 패키지에 있는 클래스만 로드 가능하므로 A는 따로 import해야 함 (import org.opentutorials.javatutorials.packages.example1.*; 또는 import org.opentutorials.javatutorials.packages.example1.A;)
손으로 컴파일하기
- 명령 프롬프트
>cd .. : 상위 폴더로 이동
>dir : 디렉토리 보기
C:\Users\User\Desktop\Java\Java workspace\javatutorials\src\org\opentutorials\javatutorials>javac src/org/opentutorials/javatutorials/packages/example3/Selfcompile.java -d bin => 다른 디렉토리(bin)에 컴파일된 결과 생성
???왜 명령프롬프트 창에서 계속 컴파일이 안될까,,,,
로드된 패키지들 간의 중복
package org.opentutorials.javatutorials.packages.example3;
import org.opentutorials.javatutorials.packages.example1.*;
import org.opentutorials.javatutorials.packages.example2.*;
public class D {
public static void main(String[] args) { B b = new B(); => example1, 2 패키지에 B 중복되어 로드 불가
}
}
- 오류 해결
package org.opentutorials.javatutorials.packages.example3;
import org.opentutorials.javatutorials.packages.example1.*;
import org.opentutorials.javatutorials.packages.example2.*;
public class D {
public static void main(String[] args) {
org.opentutorials.javatutorials.packages.example1.B b = new org.opentutorials.javatutorials.packages.example1.B();
}
=> 명시적으로 클래스패스 지정
'Programming > 자바' 카테고리의 다른 글
생활코딩 자바 - 접근제어자 (0) | 2022.04.07 |
---|---|
생활코딩 자바 - API (0) | 2022.04.07 |
생활코딩 자바 - 클래스패스 ?? (0) | 2022.04.06 |
생활코딩 자바 - overloading (0) | 2022.04.02 |
생활코딩 자바 - overriding ?? (0) | 2022.04.02 |