개발 일지/Java

[Java] 캡슐화(Encapsulation)

미숫가루설탕많이 2022. 12. 29. 16:55

 캡슐화(encapsulation)란, 특정 객체 안에 관련된 속성과 기능을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것을 의미한다.

 

 이렇게 캡슐화를 해야 하는 이유는 '데이터 보호의 목적'과 '내부적으로만 사용되는 데이터에 대한 불필요한 외부 노출'을 방지하기 위함이다.

 

 즉, 캡슐화는 관련이 있는 변수와 함수를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 은닉하는 것이다. 외부로부터 객체의 속성과 기능이 함부로 변경되지 못하게 막고, 데이터가 변경되더라도 다른 객체에 영향을 주지 않기 때문에 독립성을 확보할 수 있다. 또한, 유지보수와 코드 확장 시에도 오류의 범위를 최소화할 수 있어서 효과적인 코드 유지보수에 용이하다.

 

 캡슐화는 자바 프로그래밍에서 4가지의 접근 제어자를 통해 이루어진다.

 

 여기서 제어자(Modifier)는 자바 프로그래밍에서 클래스, 필드, 메서드, 생성자 등에 부가적인 의미를 부여하는 키워드를 말한다. 예를 들어, '붉은 노을', '파란 하늘'에서 '붉은'과 '파란'처럼 명사를 꾸며주는 형용사의 역할과 같다고 할 수 있다.

 

 제어자는 하나의 대상에 대해서 여러 제어자를 사용할 수 있지만, 접근 제어자는 단 한번만 사용할 수 있다. 

 

 

 

 

접근 제어자(Access Modifier)


  • private
    : 자기 자신의 클래스 내에서만 접근 가능
  • default
    : 접근 제한자를 명시하지 않으면 default 값이 되며, 동일 패키지 내에서만 접근 가능

  • protected
    : 동일 패키지 내에 존재하거나 파생 클래스에서만 접근 가능

  • public
    : 접근 제한 없음

 

 접근 제한 범위에 따라서 표현하면 public > protected > default > private 순으로 정리할 수 있다.

'개발 일지 > Java' 카테고리의 다른 글

[Java] 다형성(Polymorphis)  (0) 2022.12.30
[Java] getter과 setter 메서드  (2) 2022.12.29
[Java] Object 클래스  (0) 2022.12.29
[Java] super과 super()  (0) 2022.12.29
[Java] 메서드 오버라이딩(Method Overriding)  (0) 2022.12.29