본문 바로가기

언어/Java

패키지

※ default package - 논리적으로 구분해놓은 단위(물리적인 단위X, 실제로는 존재하지 않는다)
    package 나눠져도 소스코드에는 아무 의미 없다

패키지는 소문자
같은 패키지에 없어서 에러
생성자도 오류나니 정확하게 입력

/*import world.asia.Korea;
import world.asia.Japan;
*/

import world.asia.*;	// 위의 2줄을 이렇게 한줄로도 가능하나, 가독성이 떨어져서 권장하지 않음
						// world.asia의 korea인지 world.europe의 korea인지 구분이 안되서

//import world.*.*;		// 이건 compile 에러 발생. 쓰면 안된다.

import world.europe.France;

public class CountryTest {

	public static void main(String[] args) {
		/* 매번 정확한 경로 적는거 귀찮으니까
        클래스명만 사용할 수 있도록 지원하는 명령어 import
        
		world.asia.Korea k;
		k = new world.asia.Korea();
				
		world.asia.Japan j = new world.asia.Japan();
		 */	
		
		Korea k;
		k = new Korea();	
		Japan j = new Japan();		
		France f = new France();
		
//		k.capital = "베이징"; // capital 변수가 public이라서 직접 접근가능해서 틀린 답 입력 가능
//							// 그래서 private로 수정해서 직접 값 셋팅
//		k.language = "일본어";
//		k.popultaion = -1; // 접근불가능
		
	}

}
package world.europe;
public class France {
}

package world.asia;
public class Japan {
}

package world.asia;
public class Korea {	// public 누구나 접근할 수 있는 class
//	public String capital; //수도 capital 변수가 public이라서 직접 접근가능해서 틀린 답 입력 가능
	private String capital = "서울"; //수도
	String language; //언어, 접근제어자 아무것도 안붙은 상태=default 상태.
	private int population; //인구
}

패키지명이 다르면 서로 다른 클래스로 볼 수 있다. java.sql.date랑 java.util.date랑 다르다
중복을 피하기 위해 회사도메인이 my.com 이면 패키지 이름은 보통 com.my

'언어 > Java' 카테고리의 다른 글

상속(Inheritance)  (0) 2023.07.31
싱글톤  (0) 2023.07.31
Product 예제 1  (0) 2023.07.31
오버로드(Overload)  (0) 2023.07.31
접근제어자(Access Modifier)  (0) 2023.07.31