본문 바로가기

Java/문법

8-1장 패키지와 임포트

 

1. 패키지(package) 

 

 - 비슷한 목적으로 생성된 클래스 파일들을 한곳에 모아 둔 폴더 

 - 1개의 프로젝트에 1개의 패키지를 생성할 수 있고, 여러 개의 패키지를 생성할 수도 있다. 

 - src 폴더의 하위 폴더에 위치 

 - 컴파일이 수행되면 바이트 코드가 저장되는 bin 폴더에도 동일한 하위 폴더 생성

 

 - 패키지 지정 x 

    - src 폴더 아래에 소스 파일이 바로 위치 

    - default package : 하위 폴더가 없음

 

 - 패키지 지정 o 

   - 지정된 패키지 폴더가 src 폴더 아래에 생성

   - 그 아래에 소스파일 위치 

 

 

 - 패키지의 영향으로 클래스가 저장되는 공간이 분리돼 클래스명의 충돌을 방지할 수 있음

  ex) A회사 B회사 협업 프로젝트  - 2개의 회사가 서로 다른 패키지에 동일한 이름의 클래스를 작성 

//A회사 
pacakge abc.bcd;
public class Connect {
 ...
}
//B회사 
pacakge bcd.cde;
public class Connect {
  ...
}

 - A회사 Connect 클래스 경로  = abc.bcd.Connect

 - B회사 Connect 클래스 경로 = bcd.cde Connect 

 - 서로 다른 패키지를 사용하면 그 안에 있는 클래스명이 같더라도 경로가 다르므로 충돌 문제가 발생하지 않음

 

2. 임포트(import)

 

 - 다른 패키지 내의 클래스를 사용하기 위한 문법 요소 

 - 패키지 구문 다음에 위치

 

 1) 방법 1: 클래스의 풀네임 사용

  

  - 클래스의 풀네임  

   '패키지명.클래스명'

 

  - 다른 패키지 내의 클래스에서 sec01_packageimport.common 패키지의 A 클레스 객체 생성

   - A a = new A()  (x)

   - sec01_packageimport.common.common. A a =new  sec01_packageimport.common.common. A()  (o)

 

package sec01_packageimport.common;

public class A { 
	//다른 패키지에서 클래스를 사용하려면 반드시 public class로 선언돼야 함
	public int m = 3;
	public int n = 4;
	public void print() {
		System.out.println("임포트");
	}
	
}
package sec01_packageimport.EX01_PackageImport_1;

public class PackageImport {
	public static void main(String[] args) {
		//객체 생성
		// A a = new A() ; //오류
		sec01_packageimport.common.A a = new sec01_packageimport.common.A();
		
		//멤버 활용
		System.out.println(a.m);
		System.out.println(a.n);
		a.print();
	}
}

 

2) 방법 2 : 임포트 사용

 

 - 'import 패키지명 클래스명' 

- import sec01_packageimport.common.A 표기

package sec01_packageimport.EX02_PackageImport_2;

import sec01_packageimport.common.A;

public class packageImport_2 {
	public static void main(String[] args) {
		//객체 생성
		A a = new A(); // 클래스 A를 임포트했으므로 A a = new A()로 객체 생성 가능 
		
		//멤버 활용 가능 
		System.out.println(a.m);
		System.out.println(a.n);
		a.print();
		
	}
}

'Java > 문법' 카테고리의 다른 글

9-1장 접근 지정자  (0) 2023.04.30
8-2 장 외부 클래스  (0) 2023.04.24
7-4장 this 키워드와 this() 메서드  (0) 2023.04.24
7-3장 생성자  (0) 2023.04.24
7-2장 메서드  (0) 2023.04.24