从接触编程开始就一直听到面向对象的概念,之前的记忆仅仅是停留在字面意思,未能深入理解其精髓。最近翻过头来重新理一下面向对象的概念,将自己的知识点做一个梳理。
1、面向对象编程(Object Oriented Programming,OOP)
区别于传统的面向过程编程,它将数据及对数据的操作行为放在一起,作为一个相互依存、不可分割的整体——对象。对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。面向对象编程就是定义这些类。类定义好之后将作为数据类型用于创建类的对象。程序的执行表现为一组对象之间的交互通信。对象之间通过公共接口进行通信,从而完成系统功能。
2、面向对象的三个特征
封装、继承、多态。
封装
将一组具有相同特征和行为的实体抽象成独立的对象,隐藏对象的属性和实现细节,对外提供不同访问级别的接口。
继承
通过扩充已有对象的方法来创建新的对象。
多态
子类可以通过覆盖父类的同名方法来产生不同的行为。
3、面向对象的六大原则
单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。
单一职责原则(Single-Responsibility Principle,SRP)
应该有且仅有一个原因引起类的变更。
里氏替换原则(Liskov-Substitution Principle,LSP)
所有引用基类的地方必须能透明的使用其子类的对象。
依赖倒置原则(Dependence-Inversion Priciple,DIP)
高层模块不应该以来底层模块,两者都应该以来其抽象;抽象不应该依赖细节;细节应该依赖抽象。即:面向接口编程
接口隔离原则(Interface Segregation Principle)
接口尽量细化,同时接口中的方法尽量少。
迪米特法则(Lawof Demeter)
也成最少知识原则(Least Knowledge Principle,LKP),一个对象应该对其他对象有最少的了解。
开闭原则(Open Closed Principle)
对扩展开放、对修改关闭。