자바의 캡슐화
2024. 2. 6. 03:06ㆍJava
반응형
캡슐화 (Encapsulation) 란 무엇인가
캡슐화 또한 OOP 의 주요한 특징으로, 클래스 내에서 필드와 메서드들을 하나로 묶는 과정이다.
접근 제어자를 통해서 구현하며, 데이터 숨기기 (Data Hiding) 을 실현하게 해준다.
구현 예시
public class EncapsulationClass {
int a;
int b;
public EncapsulationClass(int a, int b) {
this.a = a;
this.b = b;
}
public void getAPlusB() {
System.out.println(a + b);
}
public static void main(String[] args) {
EncapsulationClass ec = new EncapsulationClass(2, 3);
ec.getAPlusB(); // 5
}
}
위 코드에서, 우리는 a와 b 각 필드의 값에는 접근할 수 없고 getAPlusB() 메서드를 통해 a + b 값에만 접근할 수 있다.
이로써 각 필드 데이터가 감춰지고, 필드와 메서드를 한 클래스에 모아서 관리하는 캡슐화가 구현된다.
왜 캡슐화하는가?
- 연관성 있는 필드와 메서드를 한 클래스에서 관리하므로 코드가 깔끔해지고 가독성이 향상된다.
- private 접근자로 설정한 필드에 안전하게 getter, setter 메서드를 사용해 접근하게 된다.
- 코드의 접근을 나눠서 관리하므로 필요한 관심사에 따라 코드를 분리한다.
- private 접근자로 설정하는 경우 외부 클래스에서 접근이 제한된다. 데이터 숨김 (Data Hiding)으로 명명된다.
데이터 숨김 (Data Hiding)
public class EncapsulationClass {
int a;
int b;
private int c;
public EncapsulationClass(int a, int b) {
this.a = a;
this.b = b;
}
public void getAPlusB() {
System.out.println(a + b);
}
public void setC(int c) {
if (c > 0) this.c = c;
}
public void getC() {
System.out.println(c);
}
public static void main(String[] args) {
EncapsulationClass ec = new EncapsulationClass(2, 3);
ec.setC(4);
ec.getC(); // 4
}
}
Data Hiding은 데이터의 접근을 따로 구현하여 접근을 통제하는 것을 말한다. 캡슐화는 그 구현의 한 예이다.
접근 제어자가 private 이므로 외부 클래스에서 접근할 수 없다.
이 경우 변수 c 에 접근하려면 public 메서드인 getC(), setC() 를 사용해야 한다. 이 둘을 getter, setter라 한다.
다른 클래스에서 변수 c에 접근하려 하면 에러가 발생한다.
References
반응형
'Java' 카테고리의 다른 글
자바의 파일 입출력 (0) | 2024.02.09 |
---|---|
자바의 객체 지향 프로그래밍 (0) | 2024.02.06 |
자바의 추상화 (1) | 2024.02.06 |
자바의 다형성 (0) | 2024.02.04 |
자바의 상속 (0) | 2024.02.04 |