패키지, 접근 제어자

패키지와 계층 구조

  • a

    • b

    • c

이렇게 하면 a, a.b, a.c, 다음과 같이 3개의 패키지가 존재한다.

패키지가 계층 구조를 이루더라도 모든 패키지는 서로 다른 패키지이다.

따라서 a 패키지의 클래스에서 a.b 패키지의 클래스가 필요하다면 import가 필요하다. 반대상황도 마찬가지이다.

접근 제어자

private는 나의 클래스 안으로 속성과 기능을 숨길 때 사용, 외부 클래스에서 해당 기능을 호출할 수 없다.

default는 나의 패키지 안으로 속성과 기능을 숨길 때 사용, 외부 패키지에서 해당 기능을 호출할 수 없다.

protected는 상속관계로 속성과 기능을 숨길 때 사용, 패키지가 달라도 상속관계의 호출은 허용함. default와 동일하 같은 패키지 안에서 호출은 허용한다.

public은 기능을 숨기지 않고 어디서든 호출할 수 있게 공개

접근 제어자를 통해 클래스 내부의 데이터를 노출시키지 않음으로써 캡슐화를 구현할 수 있는 것이다.

클래스나 인터페이스 레벨의 접근 제어자는 public, default만 사용할 수 있다.

  • 자바 컴파일러는 클래스를 로딩하고 사용하는 방식이 protected나 private이 오면 에러를 발생시킴

  • 중첩 클래스나 인터페이스에는 가능

  • public 클래스는 반드시 파일명과 이름이 같아야 한다.

    • 하나의 자바 파일에 public 클래스는 하나만 등장할 수 있다.

    • 하나의 자바 파일에 default 접근 제어자를 사용하는 클래스는 무한정 만들 수 있다.

📌 예외: 내부 클래스(Inner Class)에는 가능

내부 클래스는 외부 클래스 내부의 구현 디테일로 쓰이기 때문에 private, protected, public 모두 허용됩니다.

Last updated