最近读了李运华的《面向对象葵花宝典》,颇有感触,重新梳理了一下自己对面向对象的理解,搞清了几个关键理解,现在做一些记录:
编程语言的发展
- 机器语言:二进制符号
- 汇编语言:有意义的助记符,CPU指令/寄存器/段地址
- 面向过程语言:“完成一件事情的步骤”,高级语言,不用关注机器,只需要关注问题本身
- 机构化程序设计:自顶向下,逐步细化,模块化
- 面向对象语言:“存在的东西,对现实世界的模拟”,类,继承,可扩展,可复用
面向对象语言编程不等于面向对象编程
程序 = 算法+数据结构 = 对象+交互
产品=流水线+原材料
面向对象基本概念
1.类:一组相似事物的统称
1.1 属性:名词,最小化原则,不可再分
1.2 方法:动词,单一化原则,一个方法只做一件事
2. 对象:类的具体表现
3. 接口:相关的交互功能点定义的集合,是交互双方的约定,但具体的实现,是由各自实现
4.抽象类:基于类抽象出来的
面向对象三大特征
1.封装:空调封装了制冷的实现过程,保护隐私,隔离复杂度
2.继承:遗传 + 变异
3.多态:使用指向父类的指针或者引用,能够调用子类的对象