ITPub博客

首页 > 应用开发 > Java > 《Java编程思想》学习笔记01、对象引论

《Java编程思想》学习笔记01、对象引论

原创 Java 作者:FEMCwenlinn 时间:2007-06-04 00:21:02 0 删除 编辑

1、问题的复杂性直接取决于抽象的类型和质量,同一个问题,如果抽象的方法不同或质量不同,解决时的复杂性可能有很大差距

2、面向对象思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题

3、面向对象程序设计方式的五个基本特性(最初来自smalltalk)
a、万物皆为对象/Everything is an object.
b、程序是对象的集合,它们彼此通过发送消息来调用对方/A program is a bunch of objects telling each other what to do by sending messages.
c、每个对象都拥有由其它对象所构成的存储/Each object has its own memory made up of other objects.
d、每个对象都拥有其类型(type)/Every object has a type.
e、某一个特定类型的所有对象都可以接收(receive)同样的消息/All objects of a particular type can receive the same messages

[@more@]

4、类:具有相同特性(数据元素)和行为(功能)的对象集合。

5、接口定义了你能够对某一特定对象发出的请求

6、对象应被看作服务提供者

7、访问控制的原因:
a、让客户端程序员(类消费者)无法触及他们不应该触及的部分
b、允许库设计者(类创建者)可以改变类内部的工作方式而不用担心是否会影响到客户端程序员

8、三个访问指定词(access specifier):public、private、protected

9、public:任何人都可以使用;
private:除了类创建者和类的内部方法外,任何人都不能访问;
protected:与private类似,差别在于继承类可以访问父类的protected成员,但不能访问private成员;
还有一种缺省访问权限为package,此权限下,类可以访问在同一个包中的其它类成员,但是在包外,这些成员如同private一样

10、试图访问private成员,会得到编译时错误

11、组合,即使用现有类来合成新的类;聚合,即动态发生的组合;

12、建立新类时,应优先考虑组合,之后才是继承

13、继承一个类而不去重新定义继承到的方法(即不去重载),那么在基类接口中的方法将会被直接继承到导出类中

14、子类与父类相比,没有添加新方法,则称二者关系为"is-a";如果添加了新方法,则为"is-like-a"

15、非面向对象编译器产生函数调用都是使用前期绑定的,即链接器将这个调用解析到将要被执行代码的绝对地址;而在OOP中,程序直到运行时刻才能确定代码的地址,编译时只是确保被调用的方法存在,并对调用参数和返回值执行类型检查(能够提供此类保证的为强类型语言,不能提供的为弱类型语言-weakly typed),但并不知道将会被执行的确切代码。

16、C++中,使用virtual关键字来明确声明希望某个方法使用动态绑定,而缺省状况下不是动态绑定的;在JAVA中,动态绑定是缺省行为

17、abstract关键字把类标识为抽象类,抽象类不能创建对象,否则会产生编译时错误

18、abstract关键字还可以用来描述尚未被实现的方法,即抽象方法,它的含义为:这是一个从此类中继承出的所有类型都具有的接口方法,但是此刻我没有为它设计任何具体实现;抽象方法只能在抽象类内部创建,该类被继承时,抽象方法必须被实现,否则继承类仍然是抽象类(即继承类也必须由abstract关键字修饰,编译器将会检查这一点)。抽象方法的意义在于:你可以将一个方法置于接口中,而不必被迫为此方法提供可能毫无意义的方法体。

19、接口(interface)中不允许有任何方法体定义,即所有方法都是抽象的,但并不需要特别声明abstract关键字,抽象程序的顺序为:普通类<抽象类<接口

20、一般来说在JAVA中,需要多少对象,对象的生命周期,以及对象的具体类型,都要到运行时才能真正确定

21、容器,是一种很有用的概念,也可以说是一种思考方式,对象的个数、类型、生命周期,都可以通过为对象设置容器的方法来控制,简单来说,一个数组就是数组中每个元素的容器。这种方式在各种语言中都被普遍使用,在C++中,容器是标准C++类库(也叫做标准模板类库,Standard Template Library,STL)的一部分

22、List类,列表,用于存储序列;Map类,散列表,也叫作关联数组,用于建立对象之间的关联;Set类,集,用于存储一类对象

23、单根继承结构:所有的类最终都继承自单一的基类,即Object类,所以可以存储Object的容器可以存储任何东西(不包括基本类型)

24、因为有了单根继承结构和通过引用来操作对象的系统特性,垃圾回收器才能够实现

25、我们不知道垃圾回收何时启动并将持续多久,所以同一个JAVA程序的执行速度可能会出现前后不一致的情况,因此在某些强调程序执行速度一致的场合就不能使用它,比如较严格的实时程序

26、JAVA的异常处理是内置的、强制使用的,如果没有编写正确的异常处理代码,将会得到编译时错误

27、异常处理不是面向对象的特征,在面向对象语言出现前,异常处理就已经存在了

28、通常,多线程只是一种为单一处理器分配执行时间的手段,但是如果是在多处理器环境,那么每个线程都可以被指派给不同的处理器,那样才是真正的并行执行;语言级别上多线程的好处之一就是程序员不用关心机器上有多个还是一个处理器

29、Java提供对轻量级持久性(lightweight persistent)的支持,称为轻量级,是因为仍然需要创建显式的调用来执行存储和取回操作,轻量级持久性是通过对象序列化(object serialization)或Java数据对象(JDO,Java Data Object)来实现的

30、客户/服务器系统的核心思想是:系统具有一个中央信息存储池(central repository of information),用来存储某种数据,它通常存在于数据库中,信息与软件的宿主机器(或机器集群)被称为服务器(server),信息可以根据需要被分发给某个人员或机器集群(client)

31、插件,客户端下载一段代码,并将其插入到浏览器中适当的位置,以此来为浏览器添加新功能。

32、脚本语言,可以将客户端程序的源代码直接嵌入到HTML页面中去,解释这种语言的插件在HTML页面被显示时将自动激活(需要浏览器支持此种脚本语言才行),优点是当服务器收到要获取该个页面的请求时,它们可以被快速加载,缺点是这些代码将被暴露给任何人看

33、Java applet胜过脚本语言的优势是,它是以编译过的形式存在的,因此源代码对于客户端来说是不可见的,当然,如果你真的想反编译它,也不需要花费多少力气;注意如果applet编译后很大的话,可能需要额外的时间去下载它,而脚本语言程序是集成到Web页面中的,通常比较小,因此在需要考虑网站相应能力时,应该优先使用脚本语言

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9874732/viewspace-986662/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论
  • 博文量
    12
  • 访问量
    10961