페이지

2015. 1. 12.

[JAVA] Day6.package와 import

3. package와 import


3.1 패키지(package)


 - 서로 관련된 클래스와 인터페이스의 묶음.
 - 클래스가 물리적으로 클래스파일(*.class)인 것처럼, 패키지는 물리적으로 폴더이다.
 - 패키지는 서브패키지를 가질수 있으며, '.'으로 구분한다.
 - 클래스의 실제 이름(full name)은 패키지명이 포함된 것이다. (String클래스의 full name은 java.lang.String)
 - rt.jar는 java API의 기본 클래스들을 압축한 파일


3.2 패키지의 선언


 - 패키지는 소스파일에 첫 번째 문장(주석 제외)으로 단 한번 선언한다.
 - 하나의 소스파일에 둘 이상의 클래스가 포함된 경우, 모두 같은 패키지에 속하게 된다.
 - 하나의 소스파일에 단 하나의 public클래스만 허용한다.
 - 모든 클래스는 하나의 패키지에 속하며, 패키지가 선언되지 않은 클래스는 자동적으로 이름없는 패키지에 속하게 된다.






3.3 import


 - 사용할 클래스가 속한 패키지를 지정하는데 사용.
 - import문을 사용하면 클래스를 사용할때 패키지명을 생략할 수 있다.
 - java.lang패키지의 클래스는 import하지 않고도 사용할 수 있다.
    String, Object, System, Thread ...





3.4 import의 선언


 - import문은 패키지문과 클래스 선언의 사이에 선언한다.
 - import문을 선언하는 방법은 다음과 같다.
    import 패키지명.클래스명;
    import 패키지명.*;  (동일한 패키지는 *를 사용할 수 있다.)
    import java.util.*;
    import java.io.*;
    단 java.*; 는 안됨... 최소 폴더까지는 내려가야함.
 - import문은 컴파일 시에 처리되므로 프로그램의 성능에 아무런 영향을 미치지 않는다.
    import java.util.Calendar;
    import java.util.Date;        ->    import java.util.*;
    import java.util.ArrayList;
 - 다음의 두 코드는 서로 의미가 다르다.
    import java.util.*;
    import java.text.*;        ->    import java.*;
 - 이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패기키명을 붙여줘야 한다.


class Test
{
    public static void main(String[] args)
    {
        java.util.Date day = new java.util.Date();
        System.out.println(day);
    }
}

위 코드는 아래 코드와 같은 동작을 한다.

import java.util.Date;

class Test
{
    public static void main(String[] args)
    {
        Date day = new Date();
        System.out.println(day);
    }
}