1. 计算机革命起源于机器,编程语言的产生始于对机器的模仿。面向对象程序设计(oop)就是以计算机为表达媒体的大趋势中的组成部分
2. oop允许根据问题来描述问题,而不是根据运行解决方案的计算机来描述问题。oop其实是一种语言抽象,这种思想实质是程序可以通过添加新类型的对象使自身适合某个特定问题
3. 面向对象五个基本特性:
a. 万物皆为对象:将对象视为变量,可以存储数据,还可以在自身上执行操作,可以从抽取待解决问题的概念化构件视为程序中对象
b. 程序是对象的集合,通过消息来告知彼此要做的事
c. 每个对象都有自己的由其他对象所构成的存储:可以通过创建包含现有对象的包的方式来创建新类型的对象
d. 每个对象都拥有其类型:每个对象都是某个类的一个实例
e. 某一特定类型的所有对象都可以接收同样的消息
4. 每个对象都属于定义了特性和行为的某个特定的类,类是具有相同特性和行为的对象集合
接口引入
1. 接口确定了某一特定对象所能发出的请求
对象引入
1. 将对象想象成服务提供者,这样有助于提高对象内聚性。高内聚是指各方面都组合的很好,不要将过多的功能在放在一个对象里
2. 访问控制的存在原因:
a. 只向客户端程序员暴露必须的部分 ,隐藏其他部分。避免其他人员做破坏
b. 允许库设计者可以该表内部的工作方式而 不用担心影响到客户端程序员,接口和实现可以清晰的分离并得以保护
3. public表示其元素对任何人都可用;private表示除类型创建者和类型的内部方法外任何人都不能访问的元素protected 表示除类型创建者和类型的内部方法以及继承的类外任何人都不能访问的元素;java默认的包访问权限可以访问在同一个包中的其他类的成员
1. 如何知道何时销毁对象:
a. 将对象置于堆栈或静态存储区域内实现,这样必须在编写程序时知道对象确切数量、生命周期和类型
b. 在堆的内存池中动态地创建对象,对象信息只有运行时才能知道,因为存储空间是在运行 时动态管理的 ,所以需要大量的时间在堆中分配存储空间,这可能远远大于在堆栈中创建存储空间的时间,堆栈中创建和释放存储空间通常需要一套哦汇编指令即可,对应将栈顶指针向下或向上移动
c. java采用动态内存分配