오늘은 JAVA 강의를 들으면서 이전에 배운 내용들을 복습해보는 시간을 가졌다.
자잘하게 새로 알게 된 내용이 많았는데, 그중 '캡슐화'와 'Getter', 'Setter'에 대한 내용이 인상 깊어서 간단하게 정리해보려한다.
🟡 캡슐화가 뭘까?
'캡슐화'란 클래스 내부에 선언된 데이터를 접근제어자를 통해 접근을 제한함으로서 함부로 변경할 수 없도록 보호하는 것이다.
'객체의 무결성'을 유지하기 위해서, 우리는 필드에 private, default 등의 접근제어자를 사용해 외부의 접근을 막는다.
* '객체의 무결성'이란 객체가 변하지 않고 일관된 상태를 유지하고, 또 외부로부터 보호되고 신뢰할 수 있음을 의미한다.
캡슐화에 대해 배우면 이런 의문이 들 수 있다.
"데이터를 외부로부터 보호하는건 좋은데, 만든 사람도 못 쓰면 그게 무슨 소용이지?"
이때 필요한게 바로 Getter와 Setter다.
🟡 Getter와 Setter
Getter와 Setter는 값을 직접적으로 '조회'하고 '세팅'하는 것을 방지하기 위해 사용한다.
즉, 객체의 값을 안전하게 읽고 쓸 수 있게 해준다!
1. Getter
- 외부에서 객체의 private 필드를 읽을 수 있게 해준다.
- 직접 필드에 접근하는 것 보다 많은 제어를 할 수 있다.
ex) 값 반환 이전에 추가적인 로직 수행 - 사용법:
get+필드이름() (※필드 이름 첫 글자는 대문자로).
클래스 내부에 public으로 선언한다.
//예시
public double getPrice() {
return price;
}
2.Setter
- 외부에서 객체의 private한 필드를 설정/수정할 수 있게 해준다.
- 값을 설정할 때 추가적인 유효성 검사를 수행할 수 있다.
- 사용법:
set+필드이름() (*필드 이름 첫 글자는 대문자로).
클래스 내부에 public으로 선언한다.
//예시
public void setPrice(double price) {
if (price > 0) {
this.price = price;
} else {
throw new IllegalArgumentException("Price must be positive"); //유효성검사
}
}
'TIL > JAVA' 카테고리의 다른 글
[TIL] 생긴게 똑같으면 같은거 아닌가요?🤔 (동일성 vs 동등성) (1) | 2024.11.21 |
---|---|
[TIL] Getter와 Setter를 사용하는 이유를 항상 고민하자 (2) | 2024.11.14 |
[TIL] JAVA에서 0.1을 100번 더하면 왜 10이 아닐까? (JAVA) (0) | 2024.11.11 |
[TIL] 최대공약수(GCD)와 최소공배수(LCM) 효율적으로 구하기 (JAVA) (0) | 2024.11.08 |
[TIL] 왜 2차원 배열은 '열(colum)'의 개수를 명시하지 않고도 초기화가 가능할까? (JAVA) (1) | 2024.11.08 |