자바

TIL 20240610 Getter 과 Setter

개발자 백구 블로그 2024. 6. 10. 18:47

코틀린과 자바의 차이점 중에 하나는 

코틀린은 Getter 와 Setter를 생성해주지 않아도 된다는 점이다...

사실 자바와 코틀린에 대해서 몰랐을 때 자바 아시는 분이 코틀린과 자바의 차이점은 이렇다 하셔서 ㅋㅋㅋ

그게 뭐시여,, 이러고 찾아보긴 했었는데 이젠 조금 알것 같기도 하다 ㅠ 

공부가 더 필요할 것 같긴 하지만,,, 일단 정리를 해볼까?

 

 


 

변경이 없는 상태를 유지하기 위해 접근 제어자를 사용하는데,

이때 외부에서 필드에 직접 접근하는 것을 막기 위해 필드에 private, default 등의 접근 제어자를 사용할 수 있다..

그렇다면 어떻게 객체의 private 필드를 읽어오거나 저장할 수 있을까?

Getter 와 Setter 를 사용하여 이를 해결할 수 있다고 한다!!

 

1. Getter

외부에서 객체의 private 한 필드를 읽을 필요가 있을 때 Getter 메서드를 사용한다.

private double speed;  // 자동차 속도 , km/h
private char gear = 'P'; // 기어의 상태, P,R,N,D
private boolean lights; // 자동차 조명의 상태

 

필드에 이처럼 private 접근 제어자로 지정한 필드가 있을 때 Getter 메서드를 통해 값을 가져올 수 있다.

내부의 멤버변수에 저장된 값을 외부로 리턴하며, 매개변수는 없고, 리턴값만 있는 메서드로 정의한다. 

public String getModel() {
    return model;
}

public String getColor() {
    return color;
}

public double getPrice() {
    return price;
}

 

메서드 이름의 규칙은 " get + 필드이름(첫 글자 대문자)" 로 하며, 인스턴스의 메소드 호출 할 때와 동일하게 사용하면 된다.

 

 

 

2. Setter

외부에서 객체의 private 한 필드를 저장이나 수정을 할 필요가 있을 때 Setter 메서드를 사용한다.

private double speed;  // 자동차 속도 , km/h
private char gear = 'P'; // 기어의 상태, P,R,N,D
private boolean lights; // 자동차 조명의 상태

 

필드에 이처럼 private 접근 제어자로 지정한 필드가 있을 때 Setter 메서드를 통해 값을 저장하거나 수정할 수 있다.

외부로부터 데이터를 전달받아 멤버변수에 저장하며, 매개변수만 있고 리턴값은 없는 메서드로 정의한다.

 

public void setModel(String model) {
    this.model = model;
}

public void setColor(String color) {
    this.color = color;
}

public void setPrice(double price) {
    this.price = price;
}

 

메서드 이름의 규칙은  "set + 필드이름(첫 글자 대문자)" 로 하며, 인스턴스의 메소드 호출 할 때와 동일하게 사용하면 된다.