728x90
class Point {
public int x;
public int y;
}
- 해당 클래스는 데이터 필드에 직접 접근할 수 있어 캡슐화의 장점을 제공하지 못한다.
- API 를 수정하지 않고는 내부 표현을 바꿀 수 없고
- 내부 필드명을 봐꾸더라도 점진적으로 변경할 수 있다.
- 불변식을 보장할 수 없으며
- 외부에서 필드에 접근할 때 부수 작업을 수행할 수 없다.
- 메서드를 통해 접근하면 내부 작업을 수행 후 return 할 수 있다.
- package-private 클래스 에서도 데이터 필드를 노출해도 하등의 문제가 없다
- 맞는 말일 수도있는데, 그래도 필드에 직접 접근보다는 메서드를 통해 접근하도록 하자.
728x90
'공부 > 이펙티브자바' 카테고리의 다른 글
[이펙티브자바]item 18.상속보다는 컴포지션을 사용하라. (0) | 2023.02.02 |
---|---|
[이펙티브자바]item 17.변경 가능성을 최소화하라 (0) | 2023.01.31 |
[이펙티브자바]item 15. 클래스와 멤버의 접근 권한을 최소화하라 (0) | 2023.01.19 |
[이펙티브자바]item14.Comparable을 구현할지 고려하라. (0) | 2023.01.19 |
[이펙티브자바]item13.clone 재정의는 주의해서 진행하라. (0) | 2023.01.18 |
댓글