Java编程思想读书笔记-第一章 对象导论

1.1 抽象过程

smalltalk是Java基于的语言之一,他总结了五个基本特性。

  • 万物皆为对象。
  • 程序是对象的集合,它们通过发送消息来告知彼此要做的。(可以把消息想象为对某个特定对象方法的调用)
  • 每个对象都有自己的由其他对象所构成的存储。
  • 每个对象都拥有其类型。(每个对象都是某个类的一个实例)
  • 某一个特定类型的所有对象都可以接收同样的消息。

简单的说,对象具有状态,行为和标识。意味着每个对象有内部数据,方法,而且每个对象在内存中有一个唯一的地址。

1.2每个对象都有一个接口

举个例子,class Light就是一个接口, new Light()就是一个实例对象。

ps:关于uml图

  • 每个类都用一个方框表示,类名在方框顶部。
  • 你所关心的任何数据成员都描述在方框的中间部分。
  • 方法在方框的底部。
    这里写图片描述

1.3 每个对象都提供服务

讲对象看做是服务提供者的好处是能够提高对象的内聚性。
举个栗子:
检查打印模式的模块,你可以设计一个对象,让它了解所有的格式和打印技术。不过这样的话,这些功能对于一个对象来说太多了,你应该拆分成三个或者更多个对象。

  • 一个对象可以是所有可能的支票排版的目录;
  • 一个对象可以使一个通用的打印接口,它知道所有有关不同类型的打印机信息;
  • 第三个对象通过调用另外两个对象来完成打印任务。这样分开的话,能提高对象的复用程度。

在良好的面相对象设计中,每个对象都可以很好地完成一项任务,但是它并不试图做更多的事。

1.4 被隐藏的具体实现

访问控制存在的原因:

  • 让客户端程序员(这里的客户端不是指Androidios这些,是指比如我使用Java,我就是客户端程序员)无法触及到他们不应该触及的部分。
  • 允许库设计者可以改变内部的工作方式而不用担心会影响客户端程序员

1.5 复用具体实现

代码复用是面向对象程序设计语言最了不起的优点之一。
这里写图片描述

1.6 继承

以现有的类为基础,复制它,然后通过添加和修改这个副本来创建新类。通过继承便可以达到这样的效果。
这里写图片描述
一个基类型包含其所有导出类型所共享的特性和行为。可以创建一个基类型来标识系统中某些对象的核心概念,从基类型中导出其他类型,来标识此核心可以被实现的各种不同方式。

例如:基类型是几何形,每个几何形都具有尺寸,颜色,位置,同时每个几何形都可能被绘制,擦除等。在此基础上,可以导出具体的几何形状–正方形,三角形等。
这里写图片描述

有两种方法可以使基类于子类产生差异。

  • 直接在子类加新方法
  • 继承基类的方法重写
    这里写图片描述

1.6.1 是一个 与 像是一个 关系

这里写图片描述

1.7 伴随多态的可互换对象

动态绑定。一个基类有很多子类,当你通过基类去调用方法时,你不知道确切的是调用哪个子类的实现,所以就有了后期绑定的概念。当通过基类去调用具体类的方法时,会向上转型。

1.8 单根继承结构

在单根继承的结构中,所有对象都有一个共同的接口。Java中就是Object。

1.9 容器

list,map,set等。
不同的容器效率不同,例如ArrayList和LinkedList,前者读快写慢,后者读慢写快。

1.9.1 参数化类型

ArrayList 实际上,存入容器时会向上转型为object,拿出来会向下转型为Shape.这就是指定了参数化类型。

1.10 对象的创建和生命期

在使用对象时,最关键的问题之一就是它们的生成和销毁的方式。
java的对象时在堆上创建,对象的销毁是通过垃圾回收机制。C++的是对象是创建在堆栈上,对象的存储空间和生命周期可以在编程时确定。

1.11 异常处理:处理错误

Java内置异常处理,而且强制你使用它。

1.12 并发编程

并发编程,就是比如一个用户界面,通过使用任务,用户在按下按钮后就能得到一个响应,而不用等到程序完成当前任务才响应。
并发有个隐患:共享资源。例如,两个进程不能同时向一台打印机发送信息。为了解决这个问题,可以共享资源,但是必须在试用期被锁定。

1.13 Java与Internet

java可以做服务端。

1.14 总结

OOP很容易理解,而且注重重用。作者推荐要根据自己的需求选择语言。同时也推荐Python。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值