JAVA

자바 getter setter 복습 노트

빙하둘리 2022. 9. 21. 22:27
728x90

윤성우 자바 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

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()

[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:티스토리]

https://gallery-k.tistory.com/238

728x90