-
思想:分类的思维模式,思考问题首先会思考解决问题需要哪些分类,然后对这些分类进行单独思考。最后对某个分类的细节进行面向过程的思考
-
对于复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要用面向对象的思路来分析整个系统,但是具体到微观操作,仍需要用面向过程的思路去处理
-
面向对象编程(Object-Oriented programming,OOP)
-
面向对象编程的本质:以类的方式组织代码,以对象组织(封装)数据
-
三大特性:
-
封装
-
继承
-
多态
-
-
从认识论角度考虑是先有对象后有类,对象-是具体的事物,类-是对对象的抽象
-
从代码运行角度考虑是先有类,后有对象,类是对象的模板,对象是类的一个实例
-
什么是类?
类是构造对象的模板或者蓝图
(我们可以把类想象成制作甜饼的模具,将对象想象成为甜饼)
-
由类构造对象的过程称为创建类的实例
-
类=类的字段(属性)+类的方法(包括隐藏的构造方法)
-
对象的三个特性:
-
对象的行为(behavior)——可以对对象完成那些操作,或者可以对对象应用那些方法
-
对象的状态(state)——当调用方法时,对象会有哪些响应
-
对象的标识(identity)——如何区分具有相同行为和状态的不同对象
-
同一个类的所有对象实例,由于支持相同的行为,从而具有相似性
-
对象的行为是用可调用的方法来定义的
-
每个对象都保存着描述当前状况的信息,这就是对象的状态,对象状态的改变必须通过调用方法来实现(如果不调用方法就改变了对象的状态,说明破坏了封装性)
-
对象的状态并不能完全描述一个对象。每个对象都有一个唯一的标识,或者对象
-
对象的状态会影响对象的行为,例如如果订单是"空的",居就不能"送货"。
-
-
-
什么是封装?
-
封装是指隐藏对象的属性和实现细节,仅进对外公开接口,控制在程序中属性的读取和修改的访问级别
-
封装可以被认为是一个保护屏障防止该类的代码被外部类定义的代码随机的修改和访问
-
-
封装的优点
-
提高程序的安全性,保护数据
-
提高系统的可维护性
-
良好的封装能减少代码的耦合
-
类内部的结构可以自由修改
-
这意味着一个类可以完全改变存储数据的方式,只要使用同样的方法操作数据,其他对象就不会知道也不会关心这个类发生的变化
-
-
可以对成员变量进行更精准的控制
-
-
封装的目的
-
增强代码的复用性
-
简化代码,更易理解,增强可维护性
-
隐藏核心代码,简化外部逻辑,并且不轻易让别人修改
-
-
小节
-
封装就是将公共通用的功能,用逻辑代码实现,装到一个盒子里(class类),其他人(对象)想用这个功能,通过连接这个盒子的出入口(调用方法),就可以用了。
-
-
识别类的一个简单经验就是在分析问题的时候寻找名词,而方法对应着动词
-
例如在处理订单处理系统时,有这样一些名词
-
商品
-
订单
-
送货地址
-
付款
-
账户
-
-
由这些名词可以得到一些类,Item,Order等
-
这些类对应的动词,例如订单对应着发货或者取消,这可以作为Order类的方法
-
在类中最常见的关系有
-
依赖("uses-a")
-
依赖(dependence):如果一个类的方法使用或者操纵另一个类的对象,我们就说一个类依赖于另一个类
-
-
聚合("has-a")
-
聚合(aggregattion):例如:一个订单对象包含一些商品对象。包含关系意味着类A的对象包含类B的对象
-
-
继承("is-a")
-
继承(inheritance):一般而言,如果类A扩展类B,类A不但包含从类B继承的方法,还会有额外的一些功能,就说类A继承类B
-
参考书籍:Java核心技术 卷1(原书第11版)



