카테고리 없음

#6 접근 제어자

kmsoon 2024. 5. 3. 14:09

# 접근 제한자
## 개요
main() 메소드를 가지지 않는 대부분의 클래스는 외부 클래스에서 이용할 목적으로 설곅된 라이브러리 클래스이다.
라이브러리 클래스를 설계할 때에는 외부 클래스에서 접근할 수 있는 멤버와 접근 할 수 없는 멤버로 구분해서 설계한다.
이러한 기능을 구현하기 위해 접근 제한자(Access Modifier) 기능을 제공한다.

## 종류
각 접근 제한자에는 적용할 수 있는 대상과 어떤 개념들이 접근 제한되는지 적혀있다.
   - ex) protected 적용 대상이 (필드, 생성자, 메소드) 라면 선언시에 ( protected 필드 )는 가능하지만 ( protected 클래스) 는 불가능하다.
- default
   - 적용 대상 : 클래스, 필드, 생성자, 메소드
   - 접근 제한 : 다른 패키지에 소속된 클래스
- public
   - 적용 대상 : 클래스, 필드, 생성자, 메소드
   - 접근 제한 : 없음
- protected
   - 적용 대상 : 필드, 생성자, 메소드
   - 접근 제한 : 자식 클래스가 아닌 다른 패키지에 소속된 클래스
- private
   - 적용 대상 : 필드, 생성자, 메소드
   - 접근 제한 : 모든 외부 클래스

## 사용 예시
대표적인 예시로 외부클래스를 사용할때 필드를 private으로 지정하는게 대부분이다.
이는 보안상의 문제를 해결하기 위함이며 필드변수를 public으로 설정하지 않고 private로 지정한 다음 getter, setter 메소드를 통해 가져온다.