💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다.
☁️ 내용정리
package
package
는 그저 폴더의 개념이 아니다.
자바에서 동일한 패키지 내, 이름이 중복되는 클래스는 존재할 수 없다. 클래스를 잘 분류하지 않으면 이름이 중복되는 경우, 어떤 클래스가 어떤 일을 수행하는지 혼동되는 일이 발생한다.
따라서 클래스를 잘 분류하여 각 클래스의 목적을 확실히 하고, 접근을 제어하기 위해 존재하는 것이 패키지 이다.
- 클래스 소스코드 가장 첫 줄에
package
예약어를 사용하여 패키지를 명시해야 한다. - package선언 윗 줄에 주석이나 공백은 있어도 된다. 컴파일 시점에서 삭제되기 때문
- 패키지 선언은 소스 하나당 하나씩만 존재해야 한다.
- 패키지 이름과 소스 코드가 위치한 폴더의 이름은 같아야 한다.
- 최상위 패키지 이름은 java로 시작할 수 없다.
- 패키지 이름에 예약어를 사용하면 안 된다.
- 패키지 이름은 모두 소문자여야 한다. (규칙)
import
패키지 내에서는 패키지에 포함된 클래스와 java.lang에 포함된 클래스에만 접근할 수 있다.
그 외, 다른 패키지의 클래스에 접근하기 위해서 import 예약어를 사용해야 한다.
한 클래스에 import 되어 있는 클래스는 컴파일 시점에 먼저 컴파일 된다.
특정 패키지에 포함되어 있는 모든 클래스를 임포트 하고 싶은 경우에 와일드카드(*
)을 사용하면 된다.
헤당 방식은 컴파일 시점에 특정 패키지의 모든 클래스를 컴파일하기 때문에 컴파일러에게 조금이라도 부담을 덜어주고 싶다면 사용하지 않는 것이 좋다.
import java.nio.*;
import static
다른 클래스의 static변수 혹은 메서드를 사용하고자할 때 사용하면 된다.
import static java.lang.Thread.State.BLOCKED;
public class Main {
public static void main(String[] args) {
Thread.State state = BLOCKED;
}
}
접근 제어자
자바의 접근 제어자는 클래스, 변수, 메서드의 접근 범위를 설정하는 데 사용된다.
접근 제어자는 4가지가 존재한다.
public
: 모든 패키지에서 접근 가능protected
: 같은 패키지, 자신을 상속받은 클래스에서 접근 가능package-private
: (접근 제어자를 명시하지 않는 경우)같은 패키지에서 접근 가능private
: 같은 클래스에서 접근 가능
☁️ 내 생각
접근이 가능한 범위를 최소화 하자
접근제어자는 내가 작성한 클래스, 메서드, 변수를 다른 개발자가 외부에서 사용하는 경우 사이드이펙트가 발생할 가능성이 있을 때 사용하면 된다.
private 외의 모든 접근제어자는 인터페이스가 된다.
이는 하위 호환성을 위해 꾸준하게 관리되어야 한다는 의미이다.
변경에 유연한 코드를 작성하기 위해서 접근이 가능한 범위를 최소한으로 줄이도록 노력하자.
☁️ 질문
'JAVA > 자바의 신' 카테고리의 다른 글
11장. 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요? (0) | 2024.01.05 |
---|---|
10장. 자바는 상속이라는 것이 있어요 (0) | 2024.01.05 |
8장. 참조 자료형에 대해서 자세히 알아봅시다. (1) | 2024.01.05 |
7장. 여러 데이터를 하나에 넣을 수는 없을까요? (0) | 2024.01.04 |
6장. 내가 조건을 좀 따져요 (0) | 2024.01.04 |