08. 패키지와 클래스 패스

DEV_HOYA·2023년 11월 8일

Java

목록 보기
8/12
post-thumbnail

📌 Chapter 08

✅ 현재 디렉토리

  • 명령 프롬프트 상에서 작업이 진행중인 디렉토리의 위치

⭐ 클래스 패스(Class Path)

  • 자바 가상머신이 클래스 파일을 찾는 경로

✅ 클래스 패스 지정

C:\PackageStudy> set classpath=.;C:\PackageStudy\MyClass
  • '.'은 현재 디렉토리를 의미한다.
  • PackageStudy폴더와 MyClass폴더를 둘다 클래스패스로 지정한것이다.
  • 새로운 명령 프롬프트 창을 띄우면 다시 클래스 패스를 지정해야 한다.

✅ 절대경로 vs 상대경로

  • 주로 상대경로를 쓴다.
  • 현재 디렉토리가 바뀌면 상대경로가 지정하는 모든경로가 그에 맞게 수정됨
// 현재 디렉토리는 PackageStudy폴더라고 가정

절대경로
C:\PackageStudy\MyClass

상대경로
.\MyClass

⭐ 패키지

  • 클래스를 묶는 수단
  • 클래스를 구분하고 파악하는데 도움이 됨
  • 패키지 이름은 모두 소문자로 구성
  • 인터넷 도메인 이름의 역순으로 이름 구성
  • 이름 끝에 클래스를 정의한 주체 또는 팀의 이름 추가
// 저장위치 \com\wxfx\smart
com.wxfx.smart.Circle c1 = new com.wxfx.smart.Circle(3,5);

// 저장위치 \com\fxmx\simple
com.fxmx.simple.Circle c2 = new com.fxmx.simple.Circle(3,5);

package com.wxfx.smart;

public class Circle{

}

✅ public class

  • 하나의 소스파일에는 public으로 선언된 클래스의 정의를 하나만 둘 수 있다.
  • 소스파일의 이름은 public으로 선언된 클래스의 이름과 동일해야 한다.

⭐ 패키지 선언이 필요한 상황

  • 공간에서의 충돌 : 동일 이름의 클래스 파일을 같은 위치에 둘 수 없다.
  • 접근방법에서의 충돌 : 인스턴스 생성 방법에서 두 클래스에 차이가 없다.
    => 경로를 달리하여 구분

⭐ import

  • 패키지 이름을 늘 붙여야 하는 단점 해결
import java.util.*; // 패키지로 묶인 전체 클래스에 대한 패키지 선언, 너무 많으므로 비추천

import com.wxfx.smart.Circle;
// import com.fxmx.simple.Circle; 무슨 Circle인지 모름

class ImportCircle {
    public static void main(String args[]) {
        Circle c1 = new Circle(3.5); // com.wxfx.smart의 Circle
        System.out.println("반지름 3.5 원 넓이: " + c1.getArea());
        
        Circle c2 = new Circle(5.5); // com.wxfx.smart의 Circle
        System.out.println("반지름 5.5 원 넓이: " + c2.getArea());
    }
}

0개의 댓글