본문 바로가기

개발/[스터디] 이펙티브 자바

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

개념

중첩 클래스 

특정 목적을 위해 한 클래스에서 별도로 정의한 내부 클래스 

참고: https://jobjava00.github.io/language/java/basic/nested-class/

 

원칙

1. public클래스(=패키지 바깥에서 접근할 수 있는 클래스)는 접근자를 제공한다. 

1.1 왜 접근자를 사용해야할까?

- 내부 표현 방식을 언제든지 바꿀 수 있는 유연성이 생긴다. 

- 필드를 공개할 경우 클라이언트가 이를 직접 사용하므로, 마음대로 바꿀 수 없어 유연성이 떨어진다. 

 

1.2 클래스의 필드를 잘못 노출한 예시

1.2.1 java.awt.package의 Point 클래스

 

2. package-private 클래스 or private 중첩 클래스는 데이터 필드를 노출해도 문제가 없다. 

 

책에서 이해 못한 부분

(103p) API를 변경하지 않고는 표현 방식을 바꿀 수 없고, 필드를 읽을 때 부수 작업을 수행할 수 없다. 

-> 1. 표현방식을 바꾼다는 말이 무슨 말이지?

-> 2. 부수 작업은 어떤 내용을 이야기하는 걸까?