본문 바로가기

Programming/자바

생활코딩 자바 - 패키지 ??

패키지의 개념

: 하나의 클래스 안에서 같은 이름의 클래스들을 이용하기 위한 방법

이름의 충돌 방지함

디렉토리와 비슷 (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