본문 바로가기
공부/이펙티브자바

[이펙티브자바]item 16.public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

by 띵커베르 2023. 1. 31.
728x90
class Point {
	public int x;
    public int y;
}
  • 해당 클래스는 데이터 필드에 직접 접근할 수 있어 캡슐화의 장점을 제공하지 못한다.
  • API 를 수정하지 않고는 내부 표현을 바꿀 수 없고
    • 내부 필드명을 봐꾸더라도 점진적으로 변경할 수 있다.
  • 불변식을 보장할 수 없으며
  • 외부에서 필드에 접근할 때 부수 작업을 수행할 수 없다.
    • 메서드를 통해 접근하면 내부 작업을 수행 후 return 할 수 있다.
  • package-private 클래스 에서도 데이터 필드를 노출해도 하등의 문제가 없다
    • 맞는 말일 수도있는데, 그래도 필드에 직접 접근보다는 메서드를 통해 접근하도록 하자.
728x90

댓글