일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바
- 네트워크
- 인프콘
- 1764
- 역캡슐화
- aws 자격증
- java
- l3 스위치
- 데이터 송수신
- network
- 백준 2775
- 프로토콜
- 파이썬
- 파이썬 1712
- 백준 1712
- 계층화
- 논리구성도
- 상속
- 테슬라폰
- 유선LAN
- AWS CLF
- 인터페이스
- 10866
- 자바의 정석
- 물리구성도
- modifiers
- 다형성
- 개발바닥
- TCP/IP
- 남궁성
- Today
- Total
병훈's Blog
[Java] package와 import 본문
- 참고: Java의 정석
패키지 (package)
오늘은 쉬운 내용이에요.
우리가 컴퓨터의 파일들을 관리할 때
폴더구조를 사용하잖아요?
Java에서도 클래스들을 관리할 때
패키지를 사용해요
--
패키지는
- 서로 관련된 class와 interface의 묶음
- 물리적으로 폴더이다
- 서브패키지를 가질 수 있으며, 점( . )으로 구분한다
그리고 클래스는 패키지 안에 속해있기 때문에
클래스의 Full name은 패키지명을 포함하여 경로를 명시해줘요.
클래스를 사용할 때 원래 패키지명까지 다 적어줘야 하죠
근데 그동안 클래스명만 적었어요.
어떻게 그래왔던 걸까요?
소스코드의 첫번째 줄에
package com.java.book;
이렇게 패키지의 위치를 선언하면
같은 패키지에 속한 클래스들의 Full name을 적을 필요가 없어요.
엇?! 그럼 다른 패키지에 속한 클래스를 사용하려면
클래스명을 다 적어줘야 할까요?
String 클래스를 사용하려면java.lang.String
을 다 적어줘야 하나요?
아니요. 지금까지 안 그랬죠.
어떻게 그럴 수 있었을까요?
Java는 많이 쓰이는 java.lang 패키지를
기본으로 import 해주기 때문이에요
그럼 java.lang 패키지에 속하지 않은 클래스들은
클래스명을 다 적어줘야 할까요?
네. 다른 클래스들이 속한 패키지는
자동으로 import 해주지 않기 때문에
원래는 다 적어줘야 해요.
하지만 수동으로 import문을 적어준다면
Full name을 적을 필요가 없어요.
이제 import에 대해 알아볼까요.
import
import를 번역하면 이런 뜻이에요
import : 수입하다 (= 가져오는 느낌)
그리고 import 키워드는 이렇게 사용합니다.
import java.util.*
* 은 java.util 패키지 안의 모든 클래스를 의미해요.
하지만 모든 클래스를 의미한다고 성능이 느려지진 않아요.
그저 컴파일 시에 낯선 클래스가 보일 때 import 되었는지 확인하는 것이기에
클래스들을 가져오는 게 아니라 클래스의 위치만 확인하는 용도에요.
이렇게 패키지를 import 해놓으면 클래스를 사용할 때
클래스명만 작성하면 돼요. 간단하죠.
그리고 static import도 있어요.
이건 클래스명까지 생략하게 만들어요.
그래서 메소드명을 바로 적을 수 있게 돼요.
마지막 주의사항입니다.
이름이 같은 클래스가 속한 두 패키지를 import할 때에는
Full name을 적어줘야 합니다.
그렇지 않으면 이름이 같은 클래스인데,
어떤 패키지의 클래스를 사용하는 지 알 수 없을테니까요.
앞으로 package를 import하여 클래스 이름을 간단하게 적자구요!!
감사합니다.
오늘도 고생하셨어요.
'Java' 카테고리의 다른 글
[Java] 다형성1 (Polymorphism) (0) | 2022.09.28 |
---|---|
[Java] 제어자 (Modifiers) (0) | 2022.09.28 |
[Java] super (0) | 2022.09.27 |
[Java] 오버라이딩 (Overriding) (0) | 2022.09.26 |
[Java] 상속 (Inheritance) (0) | 2022.09.26 |