面向过程:顾名思义,面向过程编程关注的是解决问题的过程,分析一个问题的解决过程,得到解决问题的步骤,按顺序执行每一个步骤,最后解决问题。一个步骤可以是封装的一个函数,也可以是一行代码。通常是对数据结构进行操作,例如改变数组或者变量。
面向对象编程,关注的是通过使用对象来解决问题,使用对象来为我们提供服务。在面向对象编程,万事万物皆对象,对象是现实世界事物在程序中的虚拟表示和体现。那么对象是怎么来的呢?一般我们称对象是类的实例。而类是现实世界事物的抽象表示,它将数据和和数据的行为封装在一起。
面向对象的三大特征:封装、继承、多态。
封装:将对象的属性数据及对象行为的实现细节隐藏起来,外界只能反问对外开放的方法接口,这样既能保障数据的安全,发放的功能对外界是透明的,我们对内部细节的修改不会对外部造成影响。
继承:继承就是子类继承父类的属性和行为,使得子类的的对象具有父类实例的属性和方法。对于子类一些代码就不必再编写。这样进行服用可以极大的减少代码的数量。当子类重写父类方法时,虽然具体实现已经不同,但是此方法在子类和父类中的含义是一致的。
多态:字面意思多种形态,一般有以下四个方面的解释
a)重载:同一个类中具有与相同方法名称但是方法签名不一致
b)重写:子类重写父类的方法
c) 赋值多态:声明父类创建子类实例
d) 泛型:泛型类或者泛型方法可以在使用时再传入参数类型
面向对象五大原则:
- 单一职责原则:一个类只做一件事情,有且只有一个改变它的理由,只有当这件事情本身出现变化时,才发生变化。
- 开放封闭原则:一个模块在设计时应该是可扩展,当出现新的功能时,不需要修改原有代码,只需要在原来的基础上进行开发即可,这就是对扩展开放,对修改关闭。
- 里氏替换原则:子类可以替换父类出现在父类任何可以出现的地方。此时,子类和父类的设计应该有一些约定,也称为基于契约设计。子类的前置条件和后置条件规则:
a)只能使用相等或更弱的前置条件替换原始的前置条件 (子类必须接受父类可接受的一切)
b) 只能使用相等或更强的后置条件替换原始的后置条件 (父类的用户不应被使用的子类的输出所扰乱)
- 接口分离原则:不同功能的接口应该分离开来,不应强迫客户程序实现一个它用不上的接口,或是说客户端不应该被迫依赖它们不使用的方法。
- 依赖倒置原则:高层模块不应该依赖于底层模块。二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。