상세 컨텐츠

본문 제목

Java import선언과 Java.lang 패키지 + 클래스 메서드와 인스턴스 메서드

본문

  • Import 선언

 Java에서 클래스나 인터페이스 등의 자료형(type)은 반드시 어떤 패키지에 소속되어있다. 예를 들면 Scanner 클래스와 Random 클래스가 소속된 곳은 java.util 패키지이다. 원래라면 클래스나 인터페이스등을 사용하고 싶을 때 패키지이름을 포함한 클래스 혹은 인터페이스를 적어서 사용해야한다. 하지만 매번 그렇게 쓰면 비효율적이기 때문에 맨 위에 import 선언을 이용해 한번만 패키지명을 포함한 클래스 혹인 인터페이스 선언한다. 이렇게 되면 다음부터는 클래스 혹은 인터페이스이름만으로 사용이 가능해진다.

  • Java.lang 패키지

위와 같이 import선언으로 충분이 효율적이게 됐지만 Java는 더욱 더 편한 기능을 제공한다. Java 프로그래밍에 필요한 가장 기본적인 클래스들을 모아놓은 패키지를 Java.lang 패키지라 하는데 이 패키지는 너무 많이 쓰이기 때문에 import할 필요도 없이 만들었다. 따라서 import없이 그냥 클래스이름으로 사용이 가능하다.

 

  • 클래스 메서드와 인스턴스 메서드

 클래스 메서드는 앞에 static을 붙여준다. 이는 정적인 메서드로 클래스내에서 고정적인 값들을 다루거나 인스턴스 공통으로 다뤄져야하는 계산을 할때 사용된다. 반대로 인스턴스 메서드는 앞에 static이 없는 메서드로 인스턴스마다 다른 값을 이용해야하는 계산 등을 이용할 때 사용된다. 각각의 호출법은 다음과 같다.

 

         -  인스턴스 메서드 호출 : 인스턴스 변수 이름.메서드 이름(...) 

         -  클래스 메서드 호출 : 클래스 이름.메서드 이름(...)

 

예시를 보면 다음과 같다.

class Id{
    static int counter =0; // 생성된 아이디 개수
    int id;
    //생성자 (호출하는 메서드가 아니므로 static x)
    Id() {id = ++counter;};
    // 클래스 공통변수인 counter를 호출하는 클래스 메서드
    static int getCounter(){return counter;}
    // 인스턴스마다 다른 값인 아이디를 반환하는 인스턴스 메서드
    int getId(){return id;}
}
public class Main {
    public static void main(String[] args)  {
        Id a = new Id();
        Id b = new Id();
        //인스턴스 메서드 호출
        System.out.println("a의 아이디: "+a.getId());
        System.out.println("b의 아이디: "+b.getId());
        //클래스 메서드 호출
        System.out.println("부여한 아이디의 개수: "+Id.getCounter());
    }
}

 

관련글 더보기