Search

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

생성일
2023/07/27 10:36
챕터
4장 - 클래스와 인터페이스

요약

public 클래스라면 가변 필드를 노출하지말자.

public 클래스에서는 가변 필드 노출하지 말자

public class Point { public double x; public double y; }
Java
복사
이와 같이 작성하여 클래스에서는 데이터 필드에 직접 접근하게 두어 캡슐화의 이점을 포기하지 말자. 필드들을 전부 private로 바꾸고 public 접근자(getter)를 추가하자.
public class Point { private double x; private 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; } }
Java
복사
이와 같이 패키지 바깥에서 접근할 수 있는 클래스의 경우 접근자를 제공하여, 클라이언트에서 내부 표현 방식을 마음대로 바꿀 수 없게 해야한다.
private나 package-private 클래스라면 데이터 필드를 노출해도 문제가 되지 않는다.