第1章 对象导论

        计算机不只是一种工具,它已经成为了我们表达思想的一种工具,而面向对象语言是其中的一个组成部分。   

        人们解决问题的复杂度取决于抽象的类型和质量。一种是针对机器进行抽象,例如汇编语言,C语言等等,这就要求程序员在解决问题的办法和提出问题的方法之间建立映射,非常费劲。另一种是针对问题进行建模,例如LISP、APL、PROLOG等等,但是这类语言对于特定问题很适用,却不具备普遍性,而面向对象语言提供了“对象”,实质就是对问题的描述,在阅读解决方案的同时就是在阅读问题的描述。

面向对象五个基本特性:

1)万物皆为对象:所有待解问题都可以被描述为对象。

2)程序是对象的集合,它们通过发送消息来告知彼此所要做的:消息就是对象的方法,对象通过消息进行通信。

3)每个对象都有自己的由其他对象所构成的存储:可以通过对象构造更为复杂的对象。

4)每个对象都有其类型:每个对象都是某个类型的实例。

5)某一特定类型的所有对象都可以接收同样的消息:面向对象的多态性。

        对象拥有状态、行为和标识。状态可以理解为内部数据,行为可以理解为方法,标识可以理解为区分不同对象的唯一地址。

        对象是面向对象程序语言的术语,它其实就是对与所要解决问题的程序语言描述。

        对象必然属于某个类型,每个类的共性是具有相同的内部数据和方法,只是内部数据的值不相同。操作系统对于内置类和自定义类同等对待。对象能做什么由它的方法决定,类描述了方法,方法的具体代码称为实现。定义类型,通过new操作符创建这个类型的对象,调用该对象的方法,这就是面向对象设计的全部。

        我们可以把对象看作是提供服务的,尽量使一个对象提供一种服务,这样做将有助于提高对象的的内聚性。

       开发人员可以分为类创建者和客户端程序员,类创建者要隐藏该隐藏的部分,对于客户端程序员来讲只暴露他们需要得到的部分,其他的他们不需要关心的类创建者应该隐藏起来,另外类创建者可以自由的对对隐藏的部分进行修改以改进类,而不会影响到客户端程序员的调用。Java的访问控制符包括public、private、protected、默认访问权限(包访问权限)。

        复用类的最直接的方式就是创建一个类的对象并使用它,使用现有类合成新类的方式称为组合,动态的组合称为聚合,组合常被称为has-a的关系,组合和聚合的区别是,组合的对象不能单独存在,单独存在没有意义,例如汽车和轮胎;聚合的对象可以单独存在,例如飞机和机场。

        在继承中,子类包含父类的所有成员(包括private的,尽管不能使用),发送给父类的消息同样可以被子类接收,有两种方法可以使父类和子类产生差异,一种是添加更多的方法或成员数据,另一种是改变现有父类方法,称之为覆盖。继承只覆盖父类的方法称为is-a关系,添加新的方法称为is-like-a关系。把一个对象当作它的父类型看待, 直接对父类型发送消息会调用正确的子类方法,称为多态。在OOP中不会采用前期绑定,直到运行时才确定代码的地址,Java采用后期绑定,编译时只确定方法存在和参数正确,直到运行时才确定调用哪段代码,Java默认采用后期绑定。把子类看做父类的过程称为向上转型。  

        Java是单继承的,终极父类是Object,使得所有对象都具备某些共性。

        Java中有很多容器类型,主要原因是不同容器灵活性不同,执行效率也不同。Java容器是多种数据结构的实现,我们可以根据自己的需要选择任意的容器,它们的目的都是持有对象集合。

        容器中持有的类型都是Object,要转换回原有的类型需要向下转型,可能会抛出异常,通过泛型机制可以减少这种出错的机会,泛型规定放入集合的类型是固定的。 对象的创建通常在堆栈或堆中,堆栈中销毁对象比较容易,堆中比较困难,Java提供了垃圾回收机制解决这个问题。

        Java中强制使用异常处理。Java对并发操作也提供了大量支持。

        Web是一台巨型的服务器,客户端编程包括插件、脚本语言、Java的applet、微软的ActiveX,服务器端编程是Java成功的因素之一。

     

                                                   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值