Thinking in Java 读书笔记(一) --对象导论
来源:互联网 发布:臭氧消毒知乎 编辑:程序博客网 时间:2024/05/16 12:59
1.对象导论
前言
- 面对对象程序设计(Object-oriented Programming OOP)
1.1 抽象过程
人们所能解决问题的复杂性直接取决于抽象的类型与质量。
- 汇编语言—>BASIC,C—>C++,C#,Java 后面的语言都是对前面语言的在抽象,所以更加高级。
万物皆为对象
- 抽取待解决问题的所有概念化部件(人,物,服务,工具等)
- 对象是特殊的变量,可以存储数据,可以执行方法
对象具有状态、行为、标识。 –Booch
- 状态:对象的内部数据
- 方法:对象产生的行为
- 标识:每一个对象在内存中有唯一的地址,可以和其他对象区别开来。
1.2 每个对象都有一个接口
- 对象是类的实例。
- 一个类实际上就是一个数据类型
接口确定了对某一特定对象所能发出的请求。
- 每一个请求与一个方法相对应
- 向对象发送消息,对象接收到请求,执行相对应的程序代码
- 接口换言之是所有方法的集合
例: 对于 类 Ligtht 接口:on() off() brighten() dim()
- UML(Unified Modelling Language)统一建模语言
1.3 每个对象都提供服务
- 对象是服务的提供者,可以根据需要哪些服务(方法)来构建出那些对象
- 不要苛求一个对象做过多的事情
1.4 被隐藏的具体实现
程序开发人员分为类创建者和客户端程序员
- 类创建者只提供类的参数和方法,隐藏其他部分。即提供接口,隐藏实现
- 客户端程序员负责搜集开发所需要的类
设定类的边界的三个关键词 public private protected
- public 任何人都可以访问到
- private 类的创建者和类的内部方法
- protected 与privated一样,但继承类可以访问protected而不可访问private
1.5 复用具体实现
组合,使用现有的类合成新的类。
- 可以将已有的类作为新的类的一个成员对象,HAS-A。例如,汽车这个类里面有引擎这个类。
1.6 继承
“是一个”与”像是一个”的关系
- “是一个”:导出类完全是覆盖(overriding)基类的方法
- “像是一个”:导出类还存在自己新的方法
1.7 伴随多态可互换对象
你是一个Shape,我知道你可以erase()和draw()自己,那么去做吧,但是要注意细节的正确性。
void doSomething(Shape shape){ Shape.erase(); Shape.erase();}Circle circle = new Circle();Triangle triangle = new triangle();Line line = new line();doSomething(circle);doSomething(triangle);doSomething(line);
- Java多态的实现是基于动态绑定。
1.8 单根继承结构
Java所有的类都继承自单一的基类,Object。
- 单根继承使得垃圾回收实现变得容易的多。也便于很多的系统操作
1.9 容器
- 如果不知道在解决某个问题时需要多少个对象,或者他们需要存活多久,可以通过容器来存储。
- List:用于存储序列
- Map:关联数组,用来建立对象之间的关联
- Set:每种对象类型只持有一个
1.10 对象的创建和生命期
在被称为堆的(heap)的内存池中动态创建对象。
- 对象在需要的时候直接在内存池中创建。
- 垃圾回收器,可以自动发现对象何时不再使用,并继而销毁它。
- 垃圾回收器减少了销毁对象必须的编码,同时避免了内存泄漏。
1.11 异常处理:处理错误
异常提供了一种从错误状况进行可靠恢复的途径。有了错误可以矫正恢复程序的执行,进而编写更加健壮的程序。
- Java内置了异常处理,并且强制使用
1.12 并发编程
在程序中彼此独立运行的部分(任务)称为线程。
- 可以通过将一个复杂的问题切割成许多可独立运行的子任务,进而提高程序的响应能力。
- 资源锁。为了避免多个并行任务访问同一个资源产生冲突,某个任务锁定某项资源,任务完成再释放资源锁,其他任务可以继续使用这个资源锁。
1.13 Java与Internet
Java可以优雅的处理在传统编程语言中很难解决的问题,如并发,数据库访问,网络编程和分布式计算。
- Java编写servlet的程序来实现服务端编程
1 0
- Thinking in Java 读书笔记(一) --对象导论
- Thinking in Java - - 对象导论(一)
- Thinking in Java 读书笔记 第一章 对象导论
- 【Thinking in Java】一:对象导论
- CH1 对象导论——Thinking in Java 读书笔记
- 浅谈面向对象--《Thinking in Java》读书笔记(一)
- 【Thinking in java】对象导论
- 【Thinking in java】对象导论
- Thinking in java-对象导论
- Thinking in java4th读书笔记-第一章 对象导论
- 《Thinking in Java》读书笔记(一)
- Thinking in java读书笔记-线程(一)
- 【thinking in java】读书笔记(一)
- Thinking in Java 读书笔记 (一)
- 《Thinking in Java》学习笔记(一)——对象导论
- 《thinking in java》之第一章对象导论
- thinking in Java --01对象导论
- thinking in java 第一章对象导论总结
- 【Unity开发】UNITY实现断点续传
- ionic学习笔记1
- key/value数据库
- C#类型基础----不可变类型
- Yii的日志的处理机制以及扩展案例
- Thinking in Java 读书笔记(一) --对象导论
- HDU 1003 Max Sum (DP)
- json和object之间相互转换
- POJ1741&&BZOJ1468 男人八题
- 2015年总结
- Java 字符串索引indexOf
- 代理模式
- BZOJ-1433 假期的宿舍 最大流+基础建图
- 全面解析Linux 内核 3.10.x - 进程链表