안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
메인 메소드를 포함하고 있는 Foo 클래스를 만들고 객체 생성 및 메소드를 생성하였습니다.
package ce.java.test;
public class Foo {
public static void main(String[] args) {
Foo foo = new Foo();
foo.test1();
}
public void test1() {
System.out.println("안녕");
}
}
동일한 패키지 내에서 Bar 클래스를 만들었습니다.
package ce.java.test;
public class Bar {
public void test2() {
System.out.println("Hello");
}
}
Bar 클래스 내부에 있는 test2 메소드를 호출 하기 위해선 main 메소드가 포함된 Foo 클래스에서 객체 생성 후 호출을 해야합니다.
(클래스로부터 객체를 생성 → 객체를 통하여 → 메소드 호출)
package ce.java.test;
public class Foo {
public static void main(String[] args) {
Foo foo = new Foo();
foo.test1();
Bar bar = new Bar();
bar.test2();
}
public void test1() {
System.out.println("안녕");
}
}
@콘솔출력값
안녕
Hello
그렇다면 만약, 다른 패키지의 클래스를 호출하려면 어떻게 해야할까?
이 때 사용하는 것이 import입니다.
임포트(import)
임포트(import)?
- 다른 패키지 내의 클래스를 사용하기 위한 문법 요소
- 다른 패키지의 클래스를 마치 자신의 패키지 내부에 있는 것처럼 사용하는 것
- * 기호를 사용해 임포트한다면, 하위 폴더는 임포트 되지 않으며, 클래스 파일들만 임포트 됨
(import ce.java1.test1.A와 import ce.java2.test2.A는 import문으로만으론 사용이 안됨
→ 패키지명 포함 풀네임 사용하거나 import와 혼용하여 사용해야함)
우선 ce.java.test.other이라는 다른 패키지의 Other 클래스를 생성해보았습니다.
package ce.java.test.other;
public class Other {
public void test3() {
System.out.println("다른 패키지 내의 클래스");
}
}
해당 클래스를 Foo 클래스에서 호출하고 싶다면 동일하게 Other클래스의 객체를 생성하고 해당 메소드를 호출해줍니다.
메소드를 호출하고 실행하려고 하니 Other에 빨간 줄로 Other가 class로 처리 될 수 없다는 에러가 뜬 것을 확인할 수 있었습니다.
→ 다른 패키지의 클래스를 사용하려고 할 때 발생
이 때 Import를 사용하여 에러를 해결해줍니다.
import 패키지.클래스명 (ex. ce.java.test.other.Other;)
package ce.java.test;
import ce.java.test.other.Other;
public class Foo {
public static void main(String[] args) {
Foo foo = new Foo();
foo.test1();
Bar bar = new Bar();
bar.test2();
//다른 패키지 클래스의 메소드
//다른 패키지의 클래스를 사용하려면 반드시 import문 필요
Other other = new Other();
other.test3();
}
public void test1() {
System.out.println("안녕");
}
}
@콘솔출력값
안녕
Hello
다른 패키지 내의 클래스
그렇다면 import만 사용하면 다른 패키지의 모든 클래스를 사용할 수 있다는 의미가 될 것입니다.
jdk가 제공하는 다른 패키지의 클래스가 수도 없이 많이 있는데, 해당 클래스들을 모두 사용할 수 있게 됩니다.
jdk가 제공하고 있는 현재 시각을 출력할 수 있는 클래스를 사용해보겠습니다.java.util 패키지 내의 Date 클래스가 있다는 것을 확인하였습니다. (jdk - https://docs.oracle.com/en/java/javase/11/docs/api/index.html)
동일하게 Date 객체를 생성하고 현재 시각을 출력해보겠습니다. java.util 패키지 내의 있는 클래스를 사용하는 것이니 반드시 import가 필요하겠죠?import java.util.Date;로 임포트 해줍니다.
package ce.java.test;
import ce.java.test.other.Other;
import java.util.Date;
public class Foo {
public static void main(String[] args) {
Foo foo = new Foo();
foo.test1();
Bar bar = new Bar();
bar.test2();
//다른 패키지 클래스의 메소드
Other other = new Other();
other.test3();
//jdk가 제공하는 다른 패키지 클래스 사용하기
//java.util.Date
Date now = new Date();
System.out.println(now);
}
public void test1() {
System.out.println("안녕");
}
}
@콘솔출력값
안녕
Hello
다른 패키지 내의 클래스
Fri Feb 25 11:52:13 KST 2022
*KST : Korea Standard Time 한국표준시각
에러도 해결되고, 현재 시각에 대한 정보가 잘 출력된 것을 확인할 수 있습니다.
만약 import 문을 사용하기 싫다면..?
java.util.Date now = new java.util.Date();
로 클래스의 풀네임을 사용하여 import문을 생략할 수도 있습니다. 여기선 반드시! 패키지명을 포함한 풀네임을 사용해야 합니다.
만약 패키지 내의 모든 클래스를 임포트하고 싶다면..?
*를 사용하여 import java.util.* 와 같이 표현할 수도 있습니다.
'Java > Java' 카테고리의 다른 글
변수와 자료형의 종류, 기본 자료형이란? (0) | 2022.02.25 |
---|---|
콘솔 출력 메서드 (println, print, printf) (0) | 2022.02.25 |
주석, 패키지, 클래스, main메서드란? (0) | 2022.02.24 |
이클립스(Eclipse) 환경 설정 및 클래스 생성 (0) | 2022.02.24 |
자바(JAVA) 다운로드 및 설치, 환경 설정 세팅하는 방법 (0) | 2022.02.23 |