Effective Java 英文 第二版 读书笔记 Item 14:In public classes,use accessor methods,not public fields...
本章主要分析 公开属性与私有属性提供公开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...相关推荐
- Effective Java 第三版读书笔记(类和接口)
第15条.使类和成员的可访问性最小化 对于成员有四种可访问级别: 1.私有的(private)----- 只有在声明该成员的顶层类内部才可以访问这个成员. 2.包级私有的(package-privat ...
- Item 14 In public classes, use accessor methods, not public fields
在public类中使用访问方法,而非公有域 这标题看起来真晦涩..解释一下就是,如果类变成public的了--->那就使用getter和setter,不要用public成员. 要注意它的前提,如 ...
- Think in Java第四版 读书笔记9第15章 泛型
Think in Java第四版 读书笔记9第15章 泛型 泛型:适用于很多很多的类型 与其他语言相比 Java的泛型可能有许多局限 但是它还是有很多优点的. 本章介绍java泛型的局限和优势以及ja ...
- Think in Java第四版 读书笔记10 第16章 数组
Think in Java第四版 读书笔记10 第16章 数组 数组和容器很像 但他们有一些差别 16.1 数组为什么特殊 数组与容器的区别主要在效率和存储类型 效率:数组是简单的线性序列 使得数组的 ...
- Think in Java第四版 读书笔记5第11章
第十一章 持有对象(主要讲容器类) 概要 通常程序中我们需要一些容器来存储对象或者对象的引用 在java中承担这一责任的是数组和容器类 数组VS容器类 数组存在一个缺陷:长度固定不够灵活 而容器类则没 ...
- Think in Java第四版 读书笔记7第13章 字符串
本章内容 1.string的基本使用 2.string拼接符 + 3.Object方法toString 4.String的常用方法 5.String的格式化输出 6.正则表达式 13.1 不可变字符串 ...
- Think in Java第四版 读书笔记6第12章 异常处理
12.1 概念 异常可以将"在正常时候执行的代码"和"发生错误时的代码"相分离,达到结构清晰的目的. a.受检查异常checkedException 编译器强制 ...
- Think in Java第四版 读书笔记2
习题答案 http://greggordon.org/java/tij4/solutions.htm 第四章 控制流程(本节很简单,很多内容掠过) if else if else if while d ...
- Think in Java第四版 读书笔记4第九章第十章
第九章 抽象类与接口 9.1抽象类和抽象接口 抽象类可以有具体实现的方法(并不是所有方法都是abstract的)(比如这样 abstract void test3();) 子类继承抽象类要么要实现(覆 ...
最新文章
- 用户、组的管理常用到的命令介绍
- Josephus Problem的详细算法及其Python, Java语言的实现
- 用Spotlight on windows 实时监控Windows服务器性能
- 判断密文加密类型hash-identifier
- 分布式服务Dubbo+Zookeeper安全认证
- 乐视云监控数据存放到influxdb中
- spring batch
- spark on yarn webUI logs不能查看
- Java:实验四第6题
- streamlit + opencv/YOLOv3 快速构建自己的图像目标检测demo网页(七)
- Power BI中使用的M语言
- 视频教程 C语言全套视频教程(已更新完毕
- 笔记14:STM32F4之电容触摸按键
- eclipse 实用的快捷键
- 7z文件格式及其源码的分析(六)-完结篇
- uniapp安卓上传图片有时候会自动旋转问题解决
- 开放耳机有什么优缺点,列举出几款口碑不错的开放式耳机
- JSP自定义带属性的标签
- Java回顾-String/StringBuilder/StringBuffer
- sqlserver 2008 r2 直接下载地址,可用迅雷下载
热门文章
- 全志A33-ARM编译并安装net-tools
- 存钱吃利息存邮政储蓄好还是农业银行好?
- 常用有话帧检测技术(VAD)
- 《环形女人》:“穿透”与“征兆”(全文)
- 系统相机裁剪比例_从单反到手机,三种黄金比例构图方法,让你的照片与众不同...
- mysql 中文字段名_MySQL全文索引怎么做?| 教程分享
- 100g流量在电脑上可以用多久_三大运营商5G体验方案出炉!100G一个月够不够?...
- 计算机专业英语第五章ppt,计算机专业英语第五章.ppt
- 【TensorFlow-windows】keras接口——利用tensorflow的方法加载数据
- 【TensorFlow-windows】学习笔记七——生成对抗网络