Java/Basic

[Java_Basic]패키지와 클래스 패스(윤성우의 열혈 Java 프로그래밍)

bangle0621 2020. 12. 30. 14:27

클래스 패스

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

 

C:\STUDY\javastudy\java\java8>set classpath=C:\STUDY\javastudy\java\java8\MyClass

 

이런식으로 클래스 패스를 설정할 수 있다.

 

상대 경로

.\MyClass

. 은 현재 디렉토리를 의미한다.

 

절대 경로와 상대 경로

C:\STUDY\javastudy\java\java8>set classpath=.;C:\STUDY\javastudy\java\java8\MyClass

C:\STUDY\javastudy\java\java8>set classpath=.;.\MyClass

는 동일하다.

 

패키지의 이해

클래스를 묶는 수단. 묶어서 '다른 클래스'와 구분하기 위한 수단.

이름 충돌의 해결을 위함이다.

 

충돌의 경우

공간에서의 충돌 / 동일 이름의 클래스 파일을 같은 위치에 둘 수 없다.

접근 방법에서의 충돌 / 인스턴스 생성 방법에서 두 클래스에 차이가 없다

 

패키지의 효과

접근 방법의 구분 -> 서로 다른 패키지의 두 클래스는 인스턴스 생성 시 사용하는 이름이 다르다.

공간에서의 구분 -> 서로 다른 패키지의 두 클래스 파일은 저장되는 위치가 다르다.

 

  • 클래스의 이름과 구분이 되도록 패키지의 이름은 모두 소문자로 구성한다.
  • 인터넷 도메인 이름의 역순으로 패키지 이름을 구성한다.
  • 패키지 이름의 끝에 클래스를 정의한 주체 또는 침을 구분하는 이름을 추가한다.

wxfx.com 인 회사의 smart팀

com.wxfx.smart

 

패키지 com.wxfx.smart의 Circle 인스턴스 생성 문장

com.wxfx.smart.Circle c1 = new com.wxfx.smart.Circle()

package com.wxfx.smart;	//패키지 선언

public class Circle{
	double rad;
	final double PI;

	public Circle(double r){
		rad = r;
		PI = 3.14;
	}
	public double getArea(){
		return (rad * rad) * PI;
	}
}

com.wxfx.smart의 Circle.java 위치

C:\STUDY\javastudy\java\java8\src\circle1

 

com 이라는 디렉토리가 들어있는 폴더가 classpath 에 포함되어 있으면 된다.

 

import 선언

import com.wxfx.smart.Circle;

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

위에서 import 를 해주면 인스턴스를 생성할 수 있다

Circle c1 = new Circle   //com.wxfx.smart.Circle c1 = new com.wxfx.smart.Circle() 과 동일하다.

 

가급적 import선언은 제한적으로 사용해야하나 실상은 많이 사용한다.(안정적으로 사용해라)

 

import com.wxfx.smart.*;

이 안에 있는 class를 다 import한다. 가급적 사용하지 말라 하고 잘 사용하지 않는다.