Principle

To offer the benefits of encapsulation you should always expose private field with public accessor method.

Correct Implementation

// Encapsulation of data by accessor methods and mutators

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; }

}

Note

While it's never a good idea for a public class to expose fields directly, it is less harmful if the fields are immutable.

/**

* Public class with exposed immutable fields - questionable

*

* @author Kaibo

*

*/

public final class Time {

private static final int HOURS_PER_DAY = 24;

private static final int MINUTES_PER_HOUR = 60;

public final int hour;

public final int minute;

public Time(int hour, int minute) {

if (hour < 0 || hour >= HOURS_PER_DAY)

throw new IllegalArgumentException("Hour: " + hour);

if (minute < 0 || minute >= MINUTES_PER_HOUR)

throw new IllegalArgumentException("Min: " + minute);

this.hour = hour;

this.minute = minute;

}

public static void main(String[] args) {

Time t = new Time(1, 30);

t = new Time(2, 0);

System.out.println(t);

}

/*

* (non-Javadoc)

*

* @see java.lang.Object#toString()

*/

@Override

public String toString() {

return "Time [hour=" + hour + ", minute=" + minute + "]";

}

}

最新文章

  1. windows核心编程---第九章 同步设备IO与异步设备IO之同步IO
  2. C# MVC 微信支付之微信模板消息推送
  3. Session 类
  4. codeforces 446C DZY Loves Fibonacci Numbers(数学 or 数论+线段树)(两种方法)
  5. C# 和Jsonp的一个小demo 用jQuery与JSONP轻松解决跨域访问的问题
  6. MATLAB / Simulink on BeagleBone Black
  7. Android安全问题 静音拍照与被拍
  8. TOP30专访:捕鱼达人陈昊芝
  9. webstorm的默认project编码为系统编码GBK.
  10. 收藏maven错误
  11. exit()与_exit()的区别
  12. apache端口被占用
  13. 【我们都爱Paul Hegarty】斯坦福大学IOS8公开组个人笔记28 ScrollView 幻灯片视图
  14. 测序分析软件-phred的安装
  15. 团队作业8----第二次项目冲刺(Beta阶段) 第三天
  16. JS画几何图形之二【圆】
  17. 运维面试题之linux基础
  18. Navicat工具的使用 2
  19. IIS站点报拒绝访问Temporary ASP.NET Files的解决办法
  20. ADNI数据和样例

热门文章

  1. 新找到一个安装Android SDk的方法-记录
  2. 如何根据iframe内嵌页面调整iframe高宽续篇
  3. BZOJ1087状压DP 解题报告
  4. PHP 简单处理--文件下载--文件上传
  5. Water --- CSU 1550: Simple String
  6. 重新想象 Windows 8 Store Apps 系列文章索引
  7. js倒计时防页面刷新
  8. jquery 拓展
  9. 如何实现两个Activity 之间如何通讯
  10. Sass学习之路(3)——Sass编译