Java编程思想之对象导论

来源:互联网 发布:android js交互框架 编辑:程序博客网 时间:2024/05/14 12:47

今天看了Java编程思想书中的第一章对象导论,做一个理解性的总结。

一,首先说了介绍了面向对象的思想:即把现实中的问题空间的元素表示在程序的解空间中。这是一种比较灵活的语言抽象,对象和类要有状态和操作。

5个基本特性:

1.万物皆有对象。

2.程序是对象的集合,它们通过发送消息来通信。

3.每个对象都由自身和其他对象所组合而成。

4.每个对象都有所属的类型。

5.同类的对象有公共的方法,因此可以通过多态来调用公共的方法。

二,每个对象都有一个接口,这里所谓的接口指的是可以给外部调用的公共方法。UML图是进行类设计的画图工具。

三,当进行或理解程序时,最好把对象想象成“服务提供者”,因此程序可以看出是一系列对象提供的服务的调用过程。这有利于提高程序的内聚性,即对象只完成单一任务,不适图做更多任务,通过在某个对象中组合这些具有单一任务的对象,来实现一整套服务,这就是内聚性。

四,访问控制的原因有二:1.正确使用所提供的代码,使客服端程序员只注重开发所必须接触的部分。2.允许库开发者更改类内部的实现方式而不影响客服端程序员的使用。

JAVA三个访问控制符:public:谁都可以用修饰的成员。 private:只允许类内部成员方法使用,和类开发者手动更改。protected:继承类可以访问这个成员,但不能访问private成员。

不加修饰符表默认访问权限,表示同包(同一存储路径)的其他类可以访问。

五,组合是把使用其他类合成新的类,而聚合则是动态的合成,我的理解是在函数里new的,而不是初始化指定的。组合带来了极大的灵活性,因此建立新类时,要优先考虑组合,再考虑继承。

六,当继承现有类时,也创造了新的类型。这个新类型不仅包括基类的所有成员(private成员被隐藏了,且不可访问),而且复制了基类的接口(方法)。

两种使基类和子类产生差异的方法:1.直接在子类添加新方法,但要考虑基类是否需要这些新增的方法。形成“像是一个”关系。2.覆盖,即重写继承的方法。形成“是一个”关系。

七,多态的一个好处在于程序不会受到添加新类型的影响。采用了后期绑定的概念:即调用的代码直到允许时才确定执行哪个类的方法,编译只是确保调用的方法存在,并不知道执行哪个类的方法。后期绑定是通过一段代码的内容,这段代码使用在对象中存储的信息来计算方法体的地址,来实现每个对象都可以具有不同行为的表现。Java默认使用多态,因此无需添加额外的关键字给方法。

将子类看出基类的过程称为向上转型。

八,Java中默认所有类都继承Object类,来保证所有对象都具有某些功能,降低了垃圾回收器的实现难度。

九,Java SE5以后容器有了参数化类型,通过定义此类型来确保所存储的对象的类型。

十,对象在堆的内存池中动态创建,生命周期和对象数量只有在程序运行到相关代码时才确定。因为存储空间是在运行时被动态管理,因此需要很多时间在堆上分配存储空间。

垃圾回收器的机制确保了当对象不被使用时销毁它,这是通过继承自单根基类Object和只在堆上创建对象两种特性结合起来的。

十一,异常执行的是和程序正常执行路径并行的路径,异常不能忽略,异常提供了一种从错误状况进行可靠恢复的途径。

十二,并发编程,线程在单核CPU上是交替运行的,而在多核CPU上,是真正并行处理的。由于线程存在共享资源的隐患,因此就有了资源锁的概念。

十三,主要介绍网络编程部分:

1.服务器:信息存储池(数据库),用于分发信息的软件和两者所用的机器的总称。

2.浏览器相当于一个观察器。为了有更好的体验,在客服端浏览器中引入运行程序的能力,即客服端编程。

3.网页提交数据通过所有WEB服务器都提供的通用网关接口(cgi)传递,提交内容会告诉cgi怎么处理它。

4.客服端编程意味着web浏览器可以执行程序,使得返回给用户的结果更快。

5.插件添加在服务器中,当浏览器请求服务器的时候,下载到客户端,相当于编译器,可以解释执行脚本语言的代码,代码可能来自客服端自己编写,也有可能来自服务端下载。并把代码插入浏览器的适当位置。

6.脚本语言可以把客服端源代码直接嵌入HTML页面中,解释这种语言的插件在HTML页面被显示时自动激活。

7.服务端编程:java编写servlet程序实现。

原创粉丝点击