本章主要分析 公开属性与私有属性提供公开get、set方法两种方式对比

// Degenerate classes like this should not be public!
class Point {
public double x;
public double y;
}

// Public class with exposed immutable fields - questionable
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;
}
... // Remainder omitted
}

Certainly, the hard-liners are correct when it comes to public classes:

if a class is accessible outside its package, provide accessor methods, to preserve the

flexibility to change the class’s internal representation. If a public class exposes its
data fields, all hope of changing its representation is lost, as client code can be distributed
far and wide.

如果我们直接公开域,我们将无法对属性进行限制,这样会导致,在调用该处的代码都要添加上限制,而修改次数随着调用的次数而增加,

如果我们提供get,set方法,就能容易的在set方法内对传入参数进行限制。

转载于:https://www.cnblogs.com/linkarl/p/5663952.html

Effective Java 英文 第二版 读书笔记 Item 14:In public classes,use accessor methods,not public fields...相关推荐

  1. Effective Java 第三版读书笔记(类和接口)

    第15条.使类和成员的可访问性最小化 对于成员有四种可访问级别: 1.私有的(private)----- 只有在声明该成员的顶层类内部才可以访问这个成员. 2.包级私有的(package-privat ...

  2. Item 14 In public classes, use accessor methods, not public fields

    在public类中使用访问方法,而非公有域 这标题看起来真晦涩..解释一下就是,如果类变成public的了--->那就使用getter和setter,不要用public成员. 要注意它的前提,如 ...

  3. Think in Java第四版 读书笔记9第15章 泛型

    Think in Java第四版 读书笔记9第15章 泛型 泛型:适用于很多很多的类型 与其他语言相比 Java的泛型可能有许多局限 但是它还是有很多优点的. 本章介绍java泛型的局限和优势以及ja ...

  4. Think in Java第四版 读书笔记10 第16章 数组

    Think in Java第四版 读书笔记10 第16章 数组 数组和容器很像 但他们有一些差别 16.1 数组为什么特殊 数组与容器的区别主要在效率和存储类型 效率:数组是简单的线性序列 使得数组的 ...

  5. Think in Java第四版 读书笔记5第11章

    第十一章 持有对象(主要讲容器类) 概要 通常程序中我们需要一些容器来存储对象或者对象的引用 在java中承担这一责任的是数组和容器类 数组VS容器类 数组存在一个缺陷:长度固定不够灵活 而容器类则没 ...

  6. Think in Java第四版 读书笔记7第13章 字符串

    本章内容 1.string的基本使用 2.string拼接符 + 3.Object方法toString 4.String的常用方法 5.String的格式化输出 6.正则表达式 13.1 不可变字符串 ...

  7. Think in Java第四版 读书笔记6第12章 异常处理

    12.1 概念 异常可以将"在正常时候执行的代码"和"发生错误时的代码"相分离,达到结构清晰的目的. a.受检查异常checkedException 编译器强制 ...

  8. Think in Java第四版 读书笔记2

    习题答案 http://greggordon.org/java/tij4/solutions.htm 第四章 控制流程(本节很简单,很多内容掠过) if else if else if while d ...

  9. Think in Java第四版 读书笔记4第九章第十章

    第九章 抽象类与接口 9.1抽象类和抽象接口 抽象类可以有具体实现的方法(并不是所有方法都是abstract的)(比如这样 abstract void test3();) 子类继承抽象类要么要实现(覆 ...

最新文章

  1. 用户、组的管理常用到的命令介绍
  2. Josephus Problem的详细算法及其Python, Java语言的实现
  3. 用Spotlight on windows 实时监控Windows服务器性能
  4. 判断密文加密类型hash-identifier
  5. 分布式服务Dubbo+Zookeeper安全认证
  6. 乐视云监控数据存放到influxdb中
  7. spring batch
  8. spark on yarn webUI logs不能查看
  9. Java:实验四第6题
  10. streamlit + opencv/YOLOv3 快速构建自己的图像目标检测demo网页(七)
  11. Power BI中使用的M语言
  12. 视频教程 C语言全套视频教程(已更新完毕
  13. 笔记14:STM32F4之电容触摸按键
  14. eclipse 实用的快捷键
  15. 7z文件格式及其源码的分析(六)-完结篇
  16. uniapp安卓上传图片有时候会自动旋转问题解决
  17. 开放耳机有什么优缺点,列举出几款口碑不错的开放式耳机
  18. JSP自定义带属性的标签
  19. Java回顾-String/StringBuilder/StringBuffer
  20. sqlserver 2008 r2 直接下载地址,可用迅雷下载

热门文章

  1. 全志A33-ARM编译并安装net-tools
  2. 存钱吃利息存邮政储蓄好还是农业银行好?
  3. 常用有话帧检测技术(VAD)
  4. 《环形女人》:“穿透”与“征兆”(全文)
  5. 系统相机裁剪比例_从单反到手机,三种黄金比例构图方法,让你的照片与众不同...
  6. mysql 中文字段名_MySQL全文索引怎么做?| 教程分享
  7. 100g流量在电脑上可以用多久_三大运营商5G体验方案出炉!100G一个月够不够?...
  8. 计算机专业英语第五章ppt,计算机专业英语第五章.ppt
  9. 【TensorFlow-windows】keras接口——利用tensorflow的方法加载数据
  10. 【TensorFlow-windows】学习笔记七——生成对抗网络