캡슐화(encapsulation)
- 캡슐화란 클래스의 구성 요소를 마치 캡슐처럼 하나의 단위로 포장하여 관리하는 것을 뜻합니다.
- 이를 통해 클래스 안에 관련된 속성과 기능을 외부로부터 보호할 수 있게 됩니다.
- 외부에서 클래스의 내부 정보에 대해 직접 접근하거나, 직접 변경할 수 없도록 설계합니다.
- 클래스가 제공하는 메소드를 통해서만 필드에 접근이 허용됩니다.
- 클래스를 캡슐화 하는 이유는 아래와 같습니다.
- 내부적으로만 사용되는 데이터의 불필요한 외부 노출을 방지
- 데이터를 무작위한 변경으로부터 보호
- 유지 보수나 확장 시 오류의 범위를 최소화
정보의 은닉(Data Hiding)
- 캡슐화에서 가장 핵심적인 개념으로, 다른 클래스에게 자신의 정보를 숨기고 자신의 메서드를 통해서만 접근을 허용합니다.
- 이를 통해 외부로부터 클래스의 속성과 기능이 쉽게 변경되지 못하도록 합니다.
- 데이터가 변경되더라도 다른 인스턴스에 영향을 최소화하여 독립성을 유지할 수 있도록 합니다.
- 정보를 은닉하는 방법
- 자바에서는 접근 제어자(Access Modifier)를 활용해 정보를 은닉합니다.
(public / protected / (default) / private) - 클래스, 필드, 메서드 앞에 접근 제어자를 붙여 단위별로 정보의 공개 범위를 제어할 수 있습니다.
- 자바에서는 접근 제어자(Access Modifier)를 활용해 정보를 은닉합니다.
정보의 은닉 사용 예시
package student;
//상위 클래스
public class Student {
//접근제어자 활용
public double name;
protected int grade;
int age;
private int StudentID;
}
//하위 클래스
public class StudentGrade extends Student {
//상속 관계 시 하위 클래스에서 protected 정보 활용 가능
Student studentLee = new Student;
studentLee.grade = elementary;
}
//무관한 클래스
public class Subject {
//무관한 클래스일 경우 protected로 선언한 변수는 오류 발생
Student studentKim = new Student;
studentLee.studentID = 12312412;
}
'Programing Language > Java' 카테고리의 다른 글
[Java] 정적 & 불변 제어자(Static & Final Modifier) (0) | 2022.06.27 |
---|---|
[Java] 접근 제어자(Access Modifier) (0) | 2022.06.27 |
[Java] 자바 배열의 복사(Arrays Copy) (0) | 2022.06.20 |
[Java] 연산 우선 순위(Operation Priority) (0) | 2022.06.17 |
[Java] 자바의 참조 자료형(Reference Data Type) (0) | 2022.06.15 |