1. 导论
1.1 形象过程
对象:问题空间中的元素及其在解空间中的示意称为对象
- 万物皆对象
- 程序是对象的汇合,通过发送音讯来告知彼此所要做的
- 每个对象都有本人的由其余对象形成的存储
- 每个对象都领有其类型
- 某一特定类型的多有对象都能够接管同样的音讯
1.2 每个对象都有一个接口
类:
- 所有的对象都是惟一的,但同时具备雷同的个性和行为对象是所归属类的一部分。
- 类是具备雷同个性(数据元素)和行为(性能)的对象汇合。
在计算中由示意机器中的存储单元的数据类型 ------> 定义类 来适应问题
例如:所有整型数字类型具备雷同的个性和行为的汇合 -----> Integer ----> 四类八种
接口
面向对象程序设计的挑战之一,在问题空间的元素和解空间的对象建设一一映射的问题 -----> ER
每个对象只能满足某些申请,这些申请由对象的接口所定义,即确定了对某一特定对象所能收回的申请。
1.3 每个对象都提供服务
高内聚:每个对象在原则上只能实现某一特定的性能,而不会去做更对的事件,这是程序设计所要遵循的规定之一。
1.4 被暗藏的具体实现
- 类的创建者和客户端程序员
- 权限:public\private\protected
1.5 复用
- 代码复用是面向对象的程序设计所提供的长处之一。
- 组合 & 聚合:新的类能够由任意数量,任意类型的其余对象以任意能够实现新的类中想要的性能和形式组合,由现有类合成新的类的的概念被称为组合,如果这种组合动静产生,那么它通常被称为聚合,组合常常被视为“has – a”
1.6 继承
- 问题空间在解空间的示意在 Java 中以类的模式展现,即封装问题空间所须要的各种各样的数据和性能被封装到一个类中了。
- 继承的实质是创立新类,这个新类领有根底类的所有成员(private 成员被暗藏不能间接应用)级根底类的接口,即根底类能接管的所有的音讯,本类也可能接管,意味着衍生类具备和根底类雷同的类型。
-
根底类和衍生类的区别:
- 衍生类可增加新函数
- 衍生类可重写根底类函数
- 根底类和衍生类之间存在等价和相似的关系,能够说衍生类等价于根底类,根底类相似于衍生类,反之有待思辨。
1.7 多态
- 衍生类型当作它的根本类型解决的过程叫作“Upcasting”( 上溯造型 )
-
咱们将这种把衍生类型当作它的根本类型解决的过程叫作“Upcasting”(上溯造型)。其中,“cast”(造 型)是指依据一个现成的模型创立;而“Up”(向上)表明继承的方向是从“下面”来的——即根底类位于 顶部,而衍生类在下方开展。所以,依据根底类进行造型就是一个从下面继承的过程,即“Upcasting”。在面向对象的程序里,通常都要用到上溯造型技术。
-
将一条音讯发给对象时,如果并不知道对方的具体类型是什么,但采取的口头同样是正确的,这种状况就叫
作“ 多形性 ”(Polymorphism)。对面向对象的程序设计语言来说,它们用以实现多形性的办法叫作“动静
绑定”。
1.8 形象和接口
- 在程序开发的过程中根底类的对象不心愿被间接创立,通过向上造型的办法实现。
- 抽象类只能被单继承,继承类必须实现被继承类的形象办法。
-
interface(接口)关键字将抽象类的概念更延长了一步,它齐全禁止了所有的函数定义。“接口”是一种相
当无效和罕用的工具。另外如果本人违心,亦可将多个接口都合并到一起(不能从多个一般 class 或
abstract class 中继承)。
1.9 对象生命周期
- 对象的创立
-
在动态区域创建对象
-
栈:线程独享的内存区域,在外面创建对象只须要挪动指针就行,操作繁琐,效率较高
因为栈内存独享,因为在编写程序时,必须晓得对象的精确的数量、存在工夫、以及类型,须要设置存储空间的调配和开释的优先级,应用局限。
-
-
在内存池中创建对象
- 堆:线程共享的内存区域,程序运行的时候才内存空间动态分配,操作灵便,效率较低
- 对象的销毁
- 程序化