- 클래스의 필드(멤버 변수)에 접근하고 값을 설정하거나 가져오는데 사용하는 메서드

 

[ 예시코드 ]

class Car {
  // Member Variable
  private String fuel;
  private String name;
  private int sale;
  
  // Getter
  public String getFuel() {
    return fuel;
  }
  public String getName() {
    return name;
  }
  public int getSale() {
    return sale;
  }
  
  // Setter
  public void setFuel(String Fuel) {
    this.fuel = fuel;
  }
  public void setName(String name) {
    this.name = name;
  }
  public void setSale(int sale) {
    this.sale = sale;
  }
  
}

 - 위 예제코드에서 멤버변수의 접근제어자는 private으로 설정되어있다.

 - private는 외부에선 접근이 불가하기 때문에 값을 꺼내거나 넣을때  메서드의 도움이 필요하다.

 - Getter는 값을 꺼내올때, Setter는 값을 넣을때 사용하는 메서드이다.

 

[ Getter ]

- 멤버변수에 저장된 값을 외부로 return(반환)
- 매개변수 없이, 리턴값만 있는 메서드
- 메스드 형식은 getㅁㅁㅁ()
- ㅁㅁㅁ는 해당하는 멤버변수의 변수명 작성.

[ Setter ]

- 외부로부터 데이터를 받아 멤버변수에 저장
- 매개변수가 있고, 리턴값이 없는 메서드

 

[ 그럼 Getter()와 Setter()는 왜 사용할까? ]

 - 위에서 private으로 선언된 멤버변수는 타 클래스에서 메서드를 통해서만 접근이 가능하다고 했다.

 - 외부에서 멤버변수에 직접 접근할 경우 다음과 같은 문제가 발생할 수 있다.

1. 캡슐화 위반
  - 캡슐화는 객체의 상태를 외부에서 은닉하여 객체의 내부구현을 보호하는 것이다.
  - 객체의 내부구현에 의존성이 높아지고, 코드의 유지보수와 확장이 어려워진다.
2. 무결성 제어 어려움
  
- Setter()를 사용하지 않고 멤버변수에 직접 접근할 경우, 데이터에 대한 유효성 검사나, 제어를 할 수 없게 된다.
  - 이는 잘못된 데이터가 객체의 저장되어 예기치 않은 동작을 유발할 수 있다,
3. 의도하지 않은 상태 변경
  - 외부에서 멤버변수에 직접 접근할 경우, 객체의 상태가 의도하지 않게 변경될 수 있으며, 객체의 상태를 추적하
    기 어렵게 하고, 예기치 않은 버그를 발생 시킬 수 있다.
4. 다형성 및 확장성 저하
  - Getter()와 Setter()를 사용하지 않고 멤버변수에 직접 접근한 경우, 해당 멤버 변수를 사용하는 코드를 변경하기
    어려워진다.
  - 이는 코드의 재사용성, 다형성 및 확장성을 저하시킬 수 있다.

 

'#Java' 카테고리의 다른 글

배열(Array)  (0) 2024.04.05
생성자(constructor)  (0) 2024.04.04
재귀함수(Recusion Function)  (0) 2024.04.04
Java 클래스(Class)  (0) 2024.04.03
오버로딩(Overloding) vs 오버라이딩(Overriding)  (0) 2024.04.03

+ Recent posts