자바 getter setter 복습 노트
윤성우 자바 getter setter 키워드 관련 코드 정리
p.198 정보 은닉 파트부터
정보 은닉을 위해서 인스턴스 변수의 앞에 private 선언을 추가한다.
그리고 해당 인스턴스 변수에 접근할 수 있는 메서드를 별도로 제공하면 '정보 은닉'이 완료
class Circle {
private double rad = 0;
final double PI = 3.14;
public Circle(double r) {
setRad(r);
}
public void setRad(double r) {
if(r<0) {
rad = 0;
return;
}
rad = r;
}
public double getRad() {
return rad;
}
public double getArea() {
return (rad*rad)*PI; // 원의 넓이 반환
}
}
class InfoHideCircle{
public static void main(String args[]) {
Circle c = new Circle(1.5);
System.out.printlnt("반지름: "+c.getRad());
System.out.printlnt("넓이: "+c.getArea() + "\n");
c.getRad(3.4);
System.out.println("반지름: "+c.getRad());
System.out.printlnt("넓이: "+c.getArea());
}
}
private 제어자 선언은 클래스 내부에서의 접근만 허용하는 선언이다.
만약 다음과 같이 인스턴스 변수로 직접 접근하려고 하면
public static void main(String args[]) {
Circle c = new Circle(1.5);
...
c.rad = -4.5;
...
}
컴파일 오류가 떠서 문제가 생긴다.
따라서 getter와 setter 유형의 함수를 제공하는데
메서드 setRad는 '값의 설정'을 위한 메서드이고,
메서드 getRad는 '값의 참조'를 위한 메서드이다.
게터(Getter)
->인스턴스 변수의 값을 참조하는 용도로 정의된 메서드
->변수의 이름이 name일 때, 메서드의 이름은 getName으로 짖는 것이 관례
세터(Setter)
->인스턴스 변수의 값을 설정하는 용도로 정의된 메서드
->변수의 이름이 name일 때, 메서드의 이름은 setName으로 짓는 것이 관례
getter와 setter
[Getter와 Setter는 왜 써야 할까? 꼭 써야될까?
들어가기 엘레강트 오브젝트 책을 읽으면서, getter, setter에 대해서 궁금증을 가질 수 있었습니다. 자바 진영에서는 Lombok 때문에라도 Getter, Setter를 더욱 편하게 쓸수 있습니다. 또한, 뜻이 맞는
happy-coding-day.tistory.com](https://happy-coding-day.tistory.com/entry/Getter%EC%99%80-Setter%EB%8A%94-%EC%99%9C-%EC%8D%A8%EC%95%BC-%ED%95%A0%EA%B9%8C-%EA%BC%AD-%EC%8D%A8%EC%95%BC%EB%90%A0%EA%B9%8C#2.1.%20GetXXX())
[JAVA] java 생성자와 메소드_getter, setter(게터세터)
출처: https://gallery-k.tistory.com/238 [Gallery-K:티스토리]