Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 497ddc7e82
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 38 lines (20 sloc) 3.028 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
当你开发一个程序或者分析一个程序的设计时,理解对象的最佳的方式是把它们当作“服务的提供者”。
1、在一个良好的面向对象的设计中,每个对象都应该只作一件事,并且作好一件事,而不是去作太多的事情。

2、protected关键词很像private,它们的区别在于,继承类能够访问protected成员,但是不能访问private成员。

3、Java还有个“缺省”的访问权限,如果你没用上面三个的话,那就是指它了。通常把它称为package访问权限。因为同属这个package的类可以访问这个package中其它类的“缺省权限”的成员,但是出了这个package,它们就都是private的了。

4、继承如果“只覆写”基类中的方法就是完全替换(pure substitution)。这时基类同派生类的关系称作“是(is-a)”关系。
继承如果在派生类中增加新方法就是不完全替换。这时基类同派生类的关系称作“像(is-like-a)”关系。

5、“primitive(原始)”类型,它们存储在栈中,而不是像普通对象那样在堆里。

6、“短路(short circuiting)”现象:只要能准确地知道整个表达式是真还是假,就立刻作出判断。

7、package(包)的名字用全小写来表示,中间单词也不例外。

8、只有非private的方法才能被覆写(override)。尽量不要用基类的private方法的名字去命名派生类的方法。

9、一个好的构造函数应该,“用最少的工作量把对象的状态设置好,而且要尽可能地避免去调用方法。”构造函数唯一能安全调用的方法,就是基类的final方法。(这一条也适用private方法,因为它自动final的。)它们不会被覆写。

10、使用继承来表示行为的不同,而用成员数据来表示不同的状态。

11、“private的内部类”为类的设计者们提供了一咎“能彻底杜绝(用具体类型来编程所引起的依赖性问题(typecoding dependencies))并且完全将实现细节隐藏起来”的方法。

12、普通类(非内部类)是不能被定义成private或protected的;它们只可能是public或package权限的。

13、内部类最吸引人的一点就是:每个内部类都可以独立地继承某个“实现(implementation)”。因此,内部类不会受“宿主类是否已经继承了别的实现”的约束。

14、“应用程序框架(application framework)”是一个或一组为解决某种特定类型的问题而设计的类。

15、在现在的Java的版本中,在try中先出一个异常再在finally中再出一个异常时在try块中的异常将丢失。

16、好的编程语言可以帮助程序员写出好的程序,但是不能阻止程序员写出坏的程序。

17、“运行时类型识别(run_time type identification,缩写为RTTI)”的想法很简单:要让你在只持有这个对象的基类的reference的情况下,找出它的确切的类型。


10
Something went wrong with that request. Please try again.