1. 인터페이스로만 객체 접근, 정보 은닉
(1) 정보 은닉 (Information Hiding)의 개념
| 개념도 | 개념 |
|---|---|
| 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술 |
(2) 정보 은닉의 목적
- 객체에 포함된 정보의 손상과 오용 방지
- 데이터 변경 시에도 다른 객체에 영향 없이 독립성 유지
- 객체를 부품화하여 이식성과 호환성 확보
2. 정보 은닉을 위한 접근제한자 및 코드
(1) 정보 은닉을 위한 접근제한자
| 접근제한자 | 접근 권한 | 특징 |
|---|---|---|
| public | 모든 클래스, 패키지 | 모든 권한 부여 |
| private | 해당 클래스 내 | 최소 권한 부여 |
| protected | 동일 패키지 내 | 상속 시 타패키지 사용 |
| package | 동일 패키지 내 | default 접근제한자 |
(2) 정보 은닉 코드 사례
| public class Car{ private int speed; // 클래스 내 사용 가능 public void setSpeed(int speed){ // speed 변수 값 입력 this.speed = speed; } public int getSpeed(){ // speed 변수 값 출력 return speed; } } |
3. 정보 은닉과 캡슐화의 비교
| 항목 | 정보은닉 | 캡슐화 |
|---|---|---|
| 목적 | 코드의 보호 | 데이터/함수 모듈화 |
| 특징 | I/F를 통해서만 접근 | 속성/메서드 기능 집합 |
| 기법 | public, private 등 | Class |
| 장점 | 무결성, 보안성 확보 | 재사용성, 유지보수용이 |