Java编程思想(第四版)笔记(三)

原创 2016年06月01日 15:29:19

第9章 接口

“确认接口是理想选择,因而应该总是选择接口而不是具体的类。”这其实是一种引诱。当然,对于创建类,几乎在任何时刻,都可以替代为创建一个接口和一个工厂。

许多人都掉进了这种诱惑的陷阱,只要有可能就去创建接口和工厂。这种逻辑看起来好像是因为需要使用不同的具体实现,因此总是应该添加这种抽象性。这实际上已经变成了一种草率的设计优化。

任何抽象性都应该是应真正的需求而产生的。当必需时,你应该重构接口而不是到处添加额外级别的间接性,并由此带来的额外的复杂性。这种额外的复杂性非常显著,如果你让某人去处理这种复杂性,只是因为你意识到由于以防万一而添加了新接口,而没有其他更有说服力的原因,那么好吧,如果我碰上这种事,那么就会质疑此人所做的所有设计了。

恰当的原则应该是优先选择类而不是接口。从类开始,如果接口的必需性变的非常明确,那么就进行重构。接口是一种重要的工具,但容易被滥用。

第10章 内部类

内部类自动拥有对其外围类所有成员的访问权。

内部类的对象只能在其外围类的对象相关联的情况下才能被创建(内部类是非static时)。

当将内部类向上转型为其基类,尤其是转型为一个接口的时候,这个内部类-----某个接口的实现-----能够完全不可见,并且不可用。所得到的只是指向基类或即接口的引用,所以能够很方便的隐藏实现细节。

10.7 嵌套类

如果不需要内部类对象与其外围类之间有联系,那么可以将内部类声明为static。这通常称为嵌套类。普通的内部类对象隐式地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static时,意味着:

1)要创建嵌套类的对象,并不需要其外围类的对象。

2)不能从嵌套类的对象中访问非静态类的外围类对象。

嵌套类和普通的内部类还有一个区别。普通内部类的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类。但是嵌套类可以包含所有这些东西。

正常情况下,不能在接口内部放置任何代码,但嵌套类可以作为接口的一部分。你放到接口中的任何类都自动地是public和static的。因为类是static的,只是将嵌套类置于接口的命名空间内,这并不违反接口的规则。

10.8 为什么需要内部类

使用内部类最吸引人的原因是:每个内部类都能独立的继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。

接口解决了部分问题,而内部类有效地实现了“多重继承”。也就是说,内部类允许继承多个非接口类型(类或抽象类)。

如果不需要解决“多重继承”的问题,那么自然可以用别的方式编码,而不需要使用内部类。但如果使用内部类,还可以获得其他一些特性:

1)内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象的信息相互独立。

2)在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类。

3)创建内部类对象的时刻并不依赖于外围类对象的创建。

4)内部类并没有令人迷惑的“is-a”关系;它就是一个独立的实体。


版权声明:本文为博主原创文章,未经博主允许不得转载。

JAVA编程思想第4版读书笔记

原来download了网上一个第1版的Java编程思想,里面讲的还是Java1.0和Java1.1时代的故事。我看到一半,又找到第三版,发现讲的是Java 1.4时代的故事。到第4版,讲Java 1....
  • androidTang
  • androidTang
  • 2015年10月01日 11:30
  • 789

Java编程思想第四版读书笔记——第十三章 字符串

Java编程思想第四版读书笔记——第十三章 字符串 1、不可变String 2、重载“+”与StringBuilder 3、无意识的递归 4、String上的操作 5、格式化的输出...
  • severusyue
  • severusyue
  • 2016年06月30日 20:01
  • 920

Java编程思想(第四版)第一章内容要点总结

许多我们看过的编程书都会忘记,所以我选择可以笔记的形式将其中的要点摘录下来,初次做笔记,希望与大家共勉...
  • qq_31965147
  • qq_31965147
  • 2016年03月15日 21:54
  • 577

Java编程思想第四版读书笔记——第八章 多态

本来不打算看了,现在面试笔试发现还是要重新拾起来看一遍。老老实实啃砖吧  第八章 多态 在面向底下的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。 “封装”通过合并特征和行为来创建新...
  • severusyue
  • severusyue
  • 2016年06月20日 22:23
  • 710

[PDF]Java编程思想第四版完整中文高清版(亲测真实)

学习java,经人推荐购买了java编程思想第四版,后发现看书时间不长,主要因为书本拿着不方便,后上网查找java编程思想4 PDF版,可是很多是一版和二版的PDF,因为要和书本一致,故找了很多,终于...
  • qq_26949717
  • qq_26949717
  • 2017年08月24日 14:28
  • 2287

Java编程思想第四版第8章练习

public class MainTest { public static void main(String args[]){ Cycle[] cycle=...
  • zhaoqingkaitt
  • zhaoqingkaitt
  • 2014年11月18日 10:03
  • 1168

Java编程思想——第八章

第八章:多态 再论向上转型: public enum Note { M, C, B; } package Test; import Note.Note;  public clas...
  • renyuzhuo0
  • renyuzhuo0
  • 2014年01月20日 10:34
  • 658

Java编程思想--第二章 一切都是对象

2.1用引用操纵对象 一切都看作对象,但操作的标识符实际是对象的一个引用(reference);例如遥控器(引用)来操纵电视机(对象),实际操控的遥控器(引用),再由遥控器来调控电视机(对象)。如果...
  • lyt_7cs1dn9
  • lyt_7cs1dn9
  • 2016年11月28日 17:07
  • 516

java编程思想第四版 源码下载导入

百度 搜索关键字: mindview
  • zjh1n795
  • zjh1n795
  • 2013年10月18日 18:15
  • 3076

《Java编程思想(第4版)》pdf

下载地址:网盘下载 内容简介 编辑 本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Ja...
  • cf406061841
  • cf406061841
  • 2017年05月12日 23:54
  • 1237
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java编程思想(第四版)笔记(三)
举报原因:
原因补充:

(最多只允许输入30个字)