第一章-对象导论

    今天是六一儿童节,祝各位同学,儿童节快乐,永葆童心 永葆童心 永葆童心

    java编程思想这本书,已经看了好几遍了,但是有点东西老是忘记了,看了忘,忘了看,反反复复,心里有点小烦,所以下定决心写博客,记录一下。方便以后复习~~~

    本系列博客本人会一边看一遍记录,只会记录一些比较重要,关键的知识点。有想一起复习一下基础的同学,可以关注一波哦~

    好了,下面开始咯

    第一章的内容笔者认为只是简单的提到了java的一些概念跟java都有什么东西,没有什么具体的东西。具体的学习从第二章开始。。。

1.1 抽象过程

    Alan Kay曾总结了一个成功的面相对象语言所具备的五个基本特性,同时也是java所具备的5个特性

    1)万物皆为对象。将对象视为奇特的变量,它可以存储数据。除此之外还可以在自身上面进行操作。理论上将可以抽取带求解问题的任何概念化的构件(狗,建筑物。。。。),将其视为程序中的对象

    2)程序是对象的集合,他们可以通过发送消息来告知必须所需要的。要想请求一个对象就必须对该对象发送一条消息。(也就是方法的调用)

    3)每个对象都有自己的 由其他对象所构成的存储。换句话说,可以通过创建包含现有对象的方式来创建新的对象

    4)每个对象都有其类型。通俗的说法“每个对象都是某个类(class)的实例”

    5)某一个特定类型的所有对象都可以接受同样的消息。这是一句意味深长的表述,比如‘圆形’类型的对象同时也是‘几何形’类型的对象。所以一个‘圆形’对象必定能接受发送给‘几何形’对象的消息,这意味着可以编写与‘几何形’交互并自动处理的的所有与几何形相关的事物的代码,这种可替代性是OOP中最有强力的概念之一。

1.2每个对象都有一个接口

       因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。

一旦类被创建,就可以随心所欲的创建类的任意对象,然后去操作他们,但是怎么样才能得到有用的对象呢?必须有某种方式产生对对象的请求,使对象完成各种任务,如完成一笔订单。。。 每个对象都只能满足某些请求,这些请求由对象的接口(interface)所定义,决定接口的是类型。

    接口确定了对一个特性对象所能发出的请求,但是 程序中必须有满足这些请求的代码(也就是接口是需要被实现满足业务)。

1.3每个对象都提供服务

    当试图开发或理解一个程序是,最好的方法就是将对象,想象为‘服务提供者’,程序本身对用户提供服务,程序通过调用对象提供的服务来实现这一目的。

    将对象看做是服务提供者还有一个好处:有助于提高对象的内聚性,高内聚是软件设计的基本质量要求之一。人们在设计对象

的时候,将过多的功能塞在一个对象里 但这些功能对对象来说太多了,我们应该将不同的功能分到2,3个或更多的对象里,每个对象各司其职。

1.4被隐藏的具体实现

     笔者感觉这块就是在解释为什么需要public,private,protected,default

     1,将程序开发人员按照角色分为类创建者(创建 数据类型\类 的程序员)和客户端程序员(使用 数据类型\类 的程序员)

      类创建者只需要向客户端程序员暴露必须的部分而隐藏其他的部分,为什么这么做呢?因为加以隐藏,客户端程序员将不能访问,从而不用担心对其他人造成影响。被隐藏的部分通常是对象内部最脆弱的部分,这部分隐藏代码很容易被粗心或不知内情的客户端程序员所毁坏。

    2,访问控制的第二个原因就是允许设计者可以改变内部的工作方式而不用担心会影响到客户端程序员,例如 你可能为了减轻开发任务而已某种简单的方实现了某个特定类,但稍后你会发现必须改写它才能运行的更快,如果接口和实现可以分离并得以保护(访问控制),那么就可以安全的完成。

1.5复用的具体实现

    简单说就是类的对象置于新的类中,这种概念成为‘组合’,如果组合是动态发生的,那么常被成为‘聚合’.是一种‘has - a(拥有)’的关系。比如就像‘汽车拥有引擎’一样。

    组合带来了极大的灵活性,新类的成员对象通常被声明为private,使得使用新类的客户端不能访问他们。这也使得你可以在不干扰现有客户的代码的情况下修改这些成员,也可以在运行时修改这些成员对象,以实现动态修改程序的行为。下面要讨论的继承就不会具备这种灵活性,因为编译器必须通过对继承创建的类施加编译时的限制。

    由于继承在面相对象设计中很重要,所以它被高调强调,于是新手程序员就会有处处使用继承的印象。实际上在设计新类时优先要考虑组合,因为他更具有灵活性。

1.6继承

    在创建一个类之后,即使另外一个新类跟这个类具有相似的功能,我们还得重新创建一个新类。如果我们能在现有类的基础上复制它,然后通过添加和修改这个副本类来创建新类就好多了。通过继承便可以达到这种效果。

    继承使用基类和导出类的概念表示这种类之间的相似性。

    当继承现有类是,也就创造了新类。这个新类的类型不仅包含现有类型的所有成员(尽管private成员被隐藏了起来,并且不能访问),更重要的是它复制了基类的接口,也就是说所有发送给基类对象的消息同时也可以发送给导出类对象。

    有两种方法可以是基类和导出类产生差异,第一种直接在导出类中添加新方法,这些方法不属于基类。第二种方法就是改变现有基类方法的行为,这被称为覆盖(重写)。

1.7伴随多态的可互换对象

    在处理层次结构时候,经常想把一个对象不当作它所属的特定类型来对待,而是将其当做基类对象来对待。这使得人们编写出不依赖特定类型的代码。比如‘几何形’中,方法操作都是泛化的的形状,而不关系是圆形,正方形,三角形还是其他的什么形状。。。

1.8 单根继承结构

    在单根继承中所有的对象都具有一个公共接口,它们归根结底都是相同的基本类型(Objcet)

    单继承结构使得垃圾回收器的实现变的容易多,而垃圾回收器也是java对C++的重要改进之一。

1.9 容器

    可以用来存放多个对象的,比如大多数语言都有的数组类型,在java中还有List(用于存储序列),Map(也被称为关联数组,用来建立对象之间的关联),Set(每种对象类型只有一个),以及诸如队列,树,堆栈等更多的构件。

    参数化类型(泛型):java SE5之后的增加。通过参数化编译器可以定制一个只接受某种对象的容器。类型安全了


好了,先写这么多吧,笔者第一次写博客,哪里不对的地方,还希望大家纠正一下,我们共同进步。从下一篇博客开始,我们将真正的开始温习java基础知识。

    ~~~开心快乐每一天~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值