접근제어자는 클래스 구성요소의 공유 가능 범위를 설정하는 거라 이해하면 된다.
필요한 인스턴스는 public으로 공개하고,
불필요한 인스턴스는 private으로 숨겨 혼동을 방지하는 것이다.
public과 private을 주로 사용하지만,
그 외에도 protected와 default가 있다.
접근 가능 범위는 아래와 같다.
접근 가능 | public | protected | default | private |
해당 클래스 안에서 | ✅ | ✅ | ✅ | ✅ |
동일 패키지 안에서 | ✅ | ✅ | ✅ | |
동일 패키지 또는 자손 클래스 안에서 | ✅ | ✅ | ||
다른 패키지 포함 어느 곳에서든 | ✅ |
코드를 못 보게 감추는 것은 아니고
볼 수는 있으나 작성자의 의도대로 사용하기 위해
접근에 대한 제한을 거는 것이다.
아래 예시를 보면,
앞에 접근제어자를 붙이지 않은 powerButton은 자동으로 default가 된다.
default인 powerButton과 public인 sdCardSlot은
Main 클래스에서 접근할 수 있지만,
private인 cpu는 접근하지 못한다.
좀 더 활용해보면,
아래 코드에서 필드는 private으로,
메소드는 public으로 설정했다.
여기서 초록 부분을 통해 private은
같은 클래스에서만 접근이 가능하다는 것을 알 수 있다.
따라서 static이 붙은 본사 정보와 private인 필드는 접근 불가하고
접근하려면 public인 메소드를 통해 접근해야한다.
다음으로 Getter, Setter에 대해 배우는데,
이건 private 메소드에 접근하기 위해 사용된다.
우선 private 필드를 만들어주고,
Cmd + N 으로 생성자와 Getter&Setter를 만들어준다.
Get메소드는 접근 가능하도록 해주고,
Set메소드를 통해 수정하거나 값을 입력할 수 있다.
'Back > Java' 카테고리의 다른 글
Day75_객체지향 복습_IV 상속과 다형성 (0) | 2023.11.08 |
---|---|
Day72_객체지향 복습_II 생성자(Constructor), static (0) | 2023.10.31 |
Day71_객체지향 복습_I 객체지향 개념 (0) | 2023.10.31 |
Day70_for문 별찍기 (2) | 2023.10.27 |
Day26_Java 메서드 정리 (0) | 2023.06.17 |