1、抽象过程
- 不是基于所要解决的问题的结构考虑
- 将问题空间中的元素及其在解空间中的表示称为对象
- 万物皆为对象。
- 程序是对象的集合,他们通过发送消息来告知彼此所要做的。(比如调用方法)
- 每个对象都有自己的由其他对象所构成的存储。
- 每个对象都拥有其类型。类型的区别就在于可以发送什么样的消息给它。
- 某一特定类型的所有对象可以接收同样的消息。
2、每个对象都有一个接口
- 创建抽象数据类型是面向对象程序设计的基本概念之一。
- 类描述了具有相同特性和行为的对象集合,一个类实际上就是一个数据类型。
3、每个对象都提供服务
- 将对象想象为服务提供者。
- 每个对象能很好完成一项任务,但它并不试图做更多的事。
4、复用具体的实现
- 使用现有的类合成新的类,这种概念被称为组合,如果组合是动态发生的,同城被称为聚合。
- 在建立新类时,应该首先考虑组合,因为它更加简单灵活。
5、继承
- 类型不仅仅只是描述了作用于一个对象集合上的约束条件,同时还有与其他类型之间的关系。
- 理想状态下,基类与导出类之间的关系是“是一个”。有时候可能也是“像是一个”。
6、伴随多态的可互换对象
- 在处理类型的层次结构时,经常把一个对象不当做它所属的特定类型来对待,而是将其作为基类的对象对待。使得人们可以编写出不依赖于特定类型的代码。
- 非面向对象编程的编译器产生的函数调用会引起前期绑定,意味着编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到被执行的代码的绝对地址。
- 面向对象程序设计语言使用了后期绑定概念,当向对象发送消息时,被调用的代码知道运行时才能确定。java使用一小段特殊的代码来替代绝对地址调用,这段代码使用在对象中存储的信息计算方法体的地址。
- 将导出类看做基类的付哦成称为向上转型。
7、容器
如果不知道解决某个问题需要多少对象,或者他们存活多久,那么就不可能知道如何存储这些对象。通常解决的办法是创建另一种对象类型,这种新的对象类型持有对其他对象的引用。
- 参数化类型就是一个编译器可以自动定制作用于特定类型上的类。
8、对象的创建和生命周期
- 在堆中动态地创建对象。知道运行时才知道需要多少对象,它们的生命周期如何,具体类型是什么。
- 在堆栈中创建存储空间和释放存储空间通常各需要一条汇编指令即可,分别对应将栈顶指针向下移动和将栈顶指针向上移动。
- Java完全采用了动态内存分配方式。
- Java垃圾回收器被设计用来处理内存释放问题,这一点和所有对象都继承自Object以及只能以一种方式创建对象这两个特性结合起来,使得Java编程过程简便。
9、异常处理
- 异常是一种对象,它从出错地点被抛出,并被专门设计用来处理特定类型错误的相应的异常处理器捕获。
网友评论