-
[기술면접 JAVA] 캡슐화와 은닉화의 차이점취업준비/기술면접 2022. 9. 19. 19:59
캡슐화(Encapsulation)
캡슐화는 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메서드를 하나로 묶는 것을 의미한다. 클래스를 만들 때 이 클래스에서 만들어진 객체가 특정한 목적을 잘 수행할 수 있도록 사용해야 할 변수와 그 변수를 가지고 특정한 액션 즉 메서드를 관련성 있게 클래스에 구성해야 한다.
그렇다면 왜 묶어야하고 숨겨야 하는 걸까?
1. 묶음으로 인해 프로그램을 바라보는 단위가 커진다.
: 클래스 내부에 여러 함수를 내포할 수 있기 때문에 프로그램 소스 코드를 바라보는 단위가 커지며, 프로그램 관리가 수월해진다.
2. 내부를 숨김으로써 내부를 좀 더 자유롭게 변경할 수 있다.
: 내부의 데이터나 함수를 외부에서 참조하지 못하도록 차단하는 개념을 정보 은닉(Information Hiding)이라고 하며 이것이 바로 캡슐화의 개념이다.
은닉화(hiding)
은닉이란 내부 데이터, 내부 연산을 외부에서 접근하지 못하도록 은닉 혹인 격리(isolation)시키는 것이다. 변수에 접근 지정자를 private로 지정한다. setter, getter를 사용해 변수의 접근을 제어한다. 이렇게 되면 외부에서는 변수명을 그대로 사용할 수 없고 getter, setter를 통해 결과값믄 받는다. 이 메서드 안에서 어떤 일이 일어나는지는 알 수 없는것.
private 접근제어자란?
비공개 접근 수준으로 가장 한정적인 범위이다. 기능을 구현한 범위 내에서만 사용할 수 있다 즉 자바에서는 클래스 내에서만 사용할 수 있는 접근제어자이다.
캡슐화 vs 은닉화
은닉화는 중요사항(변수, 메서드 등등) 밖으로 드러나지 않도록 꼭꼭 감추는 것.
캡슐화는 중요사항을 감춘 상태에서 외부에 그것을 사용할 수 있는 방법을 설정하고 외부와 직접적으로 의사소통을 의미한다.
캡슐화와 은닉화는 동일 개념이 아닌데, 캡슐화를 하면 불필요한 정보를 감출 수 있기 때문에, 정보 은닉을 할 수 있다는 특징을 가진다.
반응형'취업준비 > 기술면접' 카테고리의 다른 글
[기술면접 sw] 아키텍처 패턴 vs 디자인 패턴 개념과 차이 (0) 2022.11.06 [기술면접 Spring] Filter, Interceptor, AOP 차이점 (1) 2022.09.20 [기술면접 OS] 프로세스와 스레드의 개념과 차이점 (0) 2022.09.19 [기술면접] 신입 개발자 JAVA 예상 면접 질문 (1) 2022.09.19 [기술면접 JAVA] 클래스변수와 인스턴스변수 차이점, static 키워드 (1) 2022.09.13