패키지는 서로 관련 있는 코드의 묶음으로 C++의 namespace와 목적이 유사하다. 패키지가 필요한 이유는 크게 두가지가 있다.
패키지는 도트(.)으로 구분하여 계층적으로 구성되어 있는데, 파일 탐색기에서는 디렉토리로 구분되어 있는 것을 확인할 수 있다.
import java.util.Scanner;
public class ImportEx {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
}
}
코드를 설명하기에 앞서 Scanner 클래스는 java.util
패키지 안에 존재한다. 그렇기에 위 코드에서는 Scanner 클래스를 사용하기 전에 import java.util.Scanner
를 사용하여 패키기 경로명을 작성해 준 것이다.
만약 java.util
안에 있는 클래스를 모두 불러오고 싶다면 아래와 같이 작성하면 된다.
import java.util.*
*
은 지정된 패키지 경로에 포함된 모든 클래스를 가져온다. 단, 하위 패키지는 가져오지 않는다.
패키지는 주석을 제외한 소스 코드의 맨 앞에 선언해야 한다.
패키지가 선언된 코드를 실행하면 패키지명에 기술된 경로로 소스 파일이 저장된다.
예를 들어 Scanner는 java.util 패키지에 포함되어 있으므로 파일 탐색기에서는 java 폴더 안에 util이라는 하위 폴더에 저장되어 있는 형태이다.
만약, 패키지를 선언하지 않고 소스 파일을 실행하게 되면 디폴트 패키지로 분류되어 현재 폴더에 저장된다.
Object 클래스는 java.lang 패키지에 속한 클래스로, 자바의 모든 클래스들은 이 클래스를 기반으로 작성된다. 즉, 모든 클래스는 Object 클래스를 최상위(부모) 클래스로 상속 받은 형태란 것이다. 자동으로 상속되기 때문에 직접 작성할 필요는 없다.
주요 메서드는 다음과 같다.
toString() 메서드는 클래스 이름과 해시코드를 포함한 문자열을 반환한다.
Book a = new Book("황기태", "명품자바", "김하진");
System.out.println(a); // Book@4e25154f (기본 toString 출력)
toString() 메서드의 역할은 다음과 같다.
toStrint() 메서드는 오버라이딩을 통해 객체의 출력을 원하는 형식으로 변경할 수 있다.
@Override
public String toString() {
return buyer + "이 구입한 도서: " + author + "의 " + title;
}
이제 System.out.println()을 이용하여 호출하면 위에서 정의한 형식대로 출력 가능합니다.
출처
명품 JAVA programming - 황기태, 김효수
https://www.youtube.com/사람만이