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 : 모든 외부 호출을 허용한다.
  • 차단 순서
  • 사용 위치

 

캡슐화

캡슐화는 속성과 기능을 하나로 묶고, 외부에 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것이다. 캡슐화는 객체지향 프로그래밍의 개념 중 하나.

외부에 공개하는 것은 그것을 외부에서 사용해도 된다는 뜻이다.

그렇다면 어떤 것을 숨기고, 어떤 것을 노출해야 할까?

  1. 데이터를 숨겨라
  2. 기능을 숨겨라

 

정리

접근 제어자와 캡슐화를 통해 데이터를 안전하게 보호할 수 있고, 사용하는 개발자 입장에서 해당 기능을 사용하는 복잡도를 낮출 수 있다.

 

 

Reference

인프런 '김영한의 실전 자바 - 기본편'