본문 바로가기
개발관련 서적 정리/Effective Java

아이템 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

by Backchus 2023. 2. 5.

데이터 필드 접근방식

    public class Point {
        public double x;
        public double y;
    }

이렇게 데이터 필드를 직접 접근하게되면 여러가지 문제점이 있습니다.

  • 클라이언트 코드가 필드를 직접 사용하면 캡슐화의 장점을 제공하지 못한다.
  • 필드를 변경하려면 API를 변경해야한다.
  • 필드에 접근할 때 부수 작업을 할 수 없다.

접근자와 변경자(mutator) 메서드를 활용해 데이터를 캡슐화

    public class Point {
        private double x;
        pirvate double y;

        public Point(double x, double y) {
            this.x = x;
            this.y = y;
        }

        public double getX() { return x; }
        public double getY() { return y; }

        public void setX(double x) { this.x = x; }
        public void setY(double y) { this.y = y; }
    }

패키지 바깥에섯 접근할 수 있는 public클래스라면 접근자를 제공함으로써 클래스 내부 표현 방식을 언제든 바꿀 수 있는 유연성을 얻을 수 있습니다. 하지만 package-private클래스 혹은 private 중첩 클래스라면 데이터 필드를 노출해도 문제가 없다.