티스토리 뷰
프로그래밍/Java
[이펙티브 자바] 규칙14. public 클래스 안에는 public 필드를 두지말고 접근자 메서드를 사용하라
덕's 머니스토리 2017. 11. 21. 14:32![]() |
|
// 이런 저급한 클래스는 절대 누구에게 보여주지 말 것
class Point {
public double x;
public double y;
}
이런 클래스는 데이터 필드를 직접 조작할 수 있어서 캡슐화의 이점을 누릴 수가 없다.
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; }
}
- private 필드와 public 접근자 메서드(getter)로 바꿔야 마땅
- 변경 가능 클래스라면 수정자(mutator) 메서드(setter)도 제공
package-private나 private로 선언된 중첩 클래스는 데이터 필드를 공개하는 것이 바람직할 때도 있다.
(클래스 정의로 보나 클라이언트 코드로 보나, 접근자 메서드보다는 시각적으로 깔끔해 보인다)요약
- public 클래스는 변경 가능 필드를 외부로 공개하면 안 된다.
- package-private나 private로 선언된 중첩 클래스의 필드는 그 변경 가능 여부와는 상관없이 외부로 공개하는 것이 바람직할 때도 있다.
'프로그래밍 > Java' 카테고리의 다른 글
| [이펙티브 자바] 규칙16. 계승하는 대신 구성하라 (0) | 2017.11.21 |
|---|---|
| [이펙티브 자바] 규칙15. 변경 가능성을 최소화하라 (0) | 2017.11.21 |
| [이펙티브 자바] 규칙13. 클래스와 멤버의 접근 권한은 최소화하라 (0) | 2017.11.21 |
| [이펙티브 자바] 규칙5. 불필요한 객체는 만들지 말라 (0) | 2017.11.21 |
| [이펙티브 자바] 규칙4. 객체 생성을 막을 때는 private 생성자를 사용하라 (0) | 2017.11.21 |
댓글
Copyright ⓒ 2018 moneystory.blog. All rights reserved.

