**"객체지향 프로그래밍에서 '추상화'와 '캡슐화'는 어떻게 다릅니까?"**둘 다 "숨긴다"는 말이 많이 나와서 헷갈리는데,정확히 어떻게 다르고 어떤 목적을 갖고 있는지 설명해보세요.
캡슐화와 추상화 모두 '정보를 숨긴다'는 공통점이 있지만, 목적이 다릅니다.
캡슐화(encapsulation)는 데이터를 보호하기 위해 내부 구현을 숨기고, 외부는 정해진 방식(getter/setter 등)으로만 접근하게 하는 것입니다. 예를 들어, private
필드와 public
메서드를 이용해서 외부에서 직접 접근을 막고, 안전하게 조작하도록 유도합니다.
반면에, 추상화(abstraction)는 필요한 기능만 공개하고, 불필요한 내부 동작은 감추는 것입니다. 예를 들어, interface
나 abstract class
를 사용해서 '무엇을 할 수 있는지'만 보여주고, '어떻게 하는지는 감추는' 구조입니다.
즉, 캡슐화는 보안/안정성, 추상화는 단순화/설계 명확성에 중점을 둔다고 볼 수 있습니다.