패키지, 접근 제어자
패키지와 계층 구조
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