thinking in java

真的挺优雅的一本书,不知道能不能啃下来,这还是上次老师介绍的时候,怀着虔诚之心去看的。摘抄了一些话。

1、所有的编程语言都提供抽象,你能解决问题的种类复杂程度直接与抽象的种类与质量相关;汇编语言是对计算计算机的抽象,命令是对汇编语言的抽象。
OOP允许你一问题的角度,而不是以要解决问题的计算机角度来描述问题
2、SmallTalk五项基本特征:(更为简洁的定义是对象有状态、行为和标识)
(1)万物皆对象
(2)程序就是一组相互之间传递消息,告诉对方该干什么的对象
(3)每个对象都利用别的对象来组件自己的记忆
(4)对象都有类型
(5)所有同一类型的对象接受相同的消息
3、使用class关键字进行定义,亚里士多德提到过鱼和鸟类这种概念;
类会定义对象的特征和行为。每个对象都代表一个实体,且属于某个类。
类是一组具有相同特征(数据元素)和行为(功能)的对象,实际上是一种数据类型。
但是与数据类型的区别在于,类是程序员为解决特定问题而定做的,而数据类型是为了表示机器的存储单元而设计的,是现成的,是程序员无可奈何的选择。根据自己的需要添加新的”数据类型“,编程系统完全欢迎,并具有与基本数据类型完全相同的待遇。
4、让多个对象为你干活,必须要有办法向对象发送请求,这样才能工作。而这些发送的请求是由接口所定义的,接口只管你能向这个对象发什么请求,还必须有能满足请求的代码,这些代码就是接口的实现。向对象发送请求,对象调用某个方法,对象来决定如何处置这个请求。
5、开发一个程序或者分析一个程序的设计时,将他们看作“服务的提供者”更加容易理解对象。你的任务是制作,或者在现有代码库中找出一组能为解决问题提供最佳服务的对象,将问题分解成一组对象。将对象视为服务还有一个内聚性高的优点,它是高质量软件的一个基本要求,就是说软件的各个组件能很好的组装在一起。
6、在一个良好的面向对象的设计中,每个对象都应该只做一件事,而且只做好一件事,而不是去做太多的事情。还有一个优点是帮助别人理解你的代码或者复用这个对象,将对象是做服务的提供者使得对象更被用于设计。
7、隐藏实现,客户程序员的目的是为了收集各种类,以便能够快速开发应用程序;而类的创建者,目的是创建一些这样的类只透露一下客户程序员必须知道的东西,这样客户程序员就不能访问,类的创建者可以修改隐藏的部分而不会担心对其他人造成影响,防止被破坏,所以把实现隐藏起来能减少程序的bug。隐藏实现,需要双方有一个都尊重的边界也是非常重要的,如果所有人都能看到这个类,那么就不存在隐藏了,所以需要控制访问权限,不能让类赤裸裸的面对整个世界。
8、控制访问权限的首要原因就是,进制客户程序员去碰他们不该碰的东西,只允许他们去接触解决问题所必须的接口,实际上也是提供给用户的一种服务。java中用了三个关键词来设置类中的边界:public、private、protected,这些控制符表示谁能使用他定义的东西,两个极端,public与private,一个谁都能用,一个只能由类的创建者使用,private是竖在于客户程序员之间的一堵墙,记住那三个权限的作用域,还有一个默认的权限,比private高一点点。
9、代码复用,一旦创建完成并且测试通过,它就能很好的表示一段有用的代码。最简单的实现是使用这个类来创建对象,也可以将那个类的对象放到一个新的类中。由于你是用已有的类,可以用任意多个任意类型的对象,以任何形式组合在一起,这种概念叫合成。合成具有极大的灵活性。
10、继承:本质上是复用接口,对象本身就是一件有力的工具,在费尽心机编写一个类又不得不再写,这时就产生了"克隆",而这就是继承的功效,只是父类修改了,子类一定要修改。如果派生类只是单纯的继承父类的接口,其他什么都不做,那将变得毫无意义。要重写一个方法,你只需要往里面丢方法就行了,这就是对基类的扩展。(后面的优点看不懂,也没认真看)
11、也就是你不想让人创建一个基类的对象,而只是把对象上传给它,以期能使用这个类的接口。编译器会阻止任何人创建abstract类的对象。而interface是对抽象类概念的神话,不允许你实现任何方法,彻底将实现和接口分离。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值