Dev Language/Java
[자바/기본] 6. 접근 제어자
ydin
2024. 1. 16. 12:29
좋은 프로그램은 무한한 자유도가 주어지는 프로그램이 아니라 적절한 제약을 제공하는 프로그램이다.
접근 제어자란?
접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있다.
- 접근 제어자 존재 이유
- 외부에서 객체의 모든 필드에 접근 가능하다면 시스템에서 의도하지 않는 값이 필드에 설정될 수 있기 때문에 부작용을 일으킬 수 있다.
- 필드에 접근 제어자로 접근 제한을 걺으로써 예상치 못한 작동(ex. 값 설정)을 미리 예방할 수 있다.
- 접근 제어자 핵심
- 캡슐화 : 속성과 기능을 외부로 숨기는 것
예시 - private volume
웬만하면 객체의 필드에는 private 접근제어자를 사용하자.
package access;
public class Speaker {
private int volume; // 접근제어자 private
...
}
→ volume 필드는 이제 Speaker 내부에서만 접근 가능하다.
접근 제어자 종류
- private : 모든 외부 호출을 막는다.
- default(package-private) : 같은 패키지 안에서 호출만 허용한다.
- protected : 같은 패키지 내의 다른 클래스에서 접근 가능. 패키지가 다를 경우 상속 관계의 호출만 가능하다.
- public : 모든 외부 호출을 허용한다.
- 차단 순서
- 사용 위치
캡슐화
캡슐화는 속성과 기능을 하나로 묶고, 외부에 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것이다. 캡슐화는 객체지향 프로그래밍의 개념 중 하나.
외부에 공개하는 것은 그것을 외부에서 사용해도 된다는 뜻이다.
그렇다면 어떤 것을 숨기고, 어떤 것을 노출해야 할까?
- 데이터를 숨겨라
- 기능을 숨겨라
정리
접근 제어자와 캡슐화를 통해 데이터를 안전하게 보호할 수 있고, 사용하는 개발자 입장에서 해당 기능을 사용하는 복잡도를 낮출 수 있다.
Reference
인프런 '김영한의 실전 자바 - 기본편'