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

weekbelt·2022년 11월 5일
0

데이터 필드 접근방식

	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 중첩 클래스라면 데이터 필드를 노출해도 문제가 없다.

profile
백엔드 개발자 입니다

0개의 댓글