TIL/JAVA

[TIL] 캡슐화와 Getter, Setter(JAVA)

Dream COM Ddulut 2024. 11. 13. 23:15

오늘은 JAVA 강의를 들으면서 이전에 배운 내용들을 복습해보는 시간을 가졌다.

자잘하게 새로 알게 된 내용이 많았는데, 그중 '캡슐화'와 'Getter', 'Setter'에 대한 내용이 인상 깊어서 간단하게 정리해보려한다.


🟡 캡슐화가 뭘까?

'캡슐화' 클래스 내부에 선언된 데이터를 접근제어자를 통해 접근을 제한함으로서 함부로 변경할 수 없도록  보호하는 것이다.

'객체의 무결성'을 유지하기 위해서, 우리는 필드에 private, default 등의 접근제어자를 사용해 외부의 접근을 막는다.

* '객체의 무결성'이란 객체가 변하지 않고 일관된 상태를 유지하고, 또 외부로부터 보호되고 신뢰할 수 있음을 의미한다.

 

캡슐화에 대해 배우면 이런 의문이 들 수 있다.

"데이터를 외부로부터 보호하는건 좋은데, 만든 사람도 못 쓰면 그게 무슨 소용이지?"

 

이때 필요한게 바로 GetterSetter다.

 

🟡 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"); //유효성검사
    }
}