栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

读书笔记-Effective Java(类和接口)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

读书笔记-Effective Java(类和接口)

读书笔记-Effective Java(类和接口)
    • 15.使类和成员的可访问性最小化
    • 16. 要在公有类而非公有域中使用访问方法
    • 17.使可变性最小化
    • 18.复合先于继承
    • 19.要么设计继承并提供文档说明,要么禁止继承
    • 20.接口优于抽象类
    • 21.为后代设计接口
    • 22.接口只用于定义类型
    • 23.类层次优于标签类
    • 24.静态成员类优于非静态成员类
    • 25.限制源文件为单个顶级类

15.使类和成员的可访问性最小化

组件可以独立地开发,加快了系统开发的速度,公有类不应该包含公有域。

16. 要在公有类而非公有域中使用访问方法 17.使可变性最小化

类的不可变遵循五条规则:

  • 不要提供任何会修改对象状态的方法
  • 保证类不会被拓展
  • 声明所有的域都是final的
  • 声明所有的域都是私有的
  • 确保对于任何可变组件的互斥访问
18.复合先于继承

包内部使用继承非常安全,包外继承则非常危险。继承打破了封装性。这样做带来的问题就是,如果父类有几个相同性质的方法,而子类要对这类性质的方法进行覆盖,如果后续父类对这类性质的方法进行了拓展或增加,子类就必须同步进行修改。使用复合方法,即在拓展类中引用现有类的一个实例。只有当子类和超类之间确实存在子类型关系时,使用继承才是恰当的。

19.要么设计继承并提供文档说明,要么禁止继承

构造器绝不能调用可被覆盖得方法,这是因为子类覆盖的方法将会在子类的构造器运行之前先被调用,如果该覆盖方法依赖于子类构造器所执行的任何初始化工作,该方法将不会如预期般执行。

对于那些并非为了安全地进行子类化而设计和编写文档的类,要禁止子类化。有两种方法禁止子类化,一种是把这个类声明为final的,一种是把所有的构造器私有化,或者包级私有,并增加一些公有的静态工厂来代替构造器。

20.接口优于抽象类

如果你导出了一个重要接口,就应该坚决考虑同时提供骨架实现类。而且,还应该尽可能地通过缺省方法在接口中提供骨架实现,以便接口的所有实现类都能使用。

21.为后代设计接口

添加缺省的方法

22.接口只用于定义类型

接口只应该用于定义类型,而不能用于导出常量

23.类层次优于标签类

标签类过于冗长,容易出错,并且效率低下,标签类真是对类层次的一种简单的仿效。类层次的一个好处就是,它们可以用来反映类型之间本质上的层次关系,有助于增强灵活性,并有助于更好地进行编译时类型检查。

24.静态成员类优于非静态成员类
  • 静态成员类:最简单的一种嵌套类。最好看作普通类,只是碰巧被声明在另一个类的内部而已。常见用法是作为公有的辅助类,
25.限制源文件为单个顶级类

不要把多个顶级类或者接口放到同一个源文件中,否则程序的行为将受源文件传输给编译器的顺序的影响。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号