面向对象编程与面向过程编程
面向对象编程:
-
三个特点:封装、继承、多态
-
封装: 把客观对象抽象成类,隐藏属性和方法的实现细节,仅对外公开接口,使得代码模块化
-
继承: 继承可以解决代码复用,子类可以使用父类的功能,并且可以对这些功能进行扩展。让编程更加靠近人类思维。
-
多态: 是指接口的多种不同的实现方式。也可以理解成:多态是指通过指向父类的引用或指针,来调用在不同子类(派生类)中实现的方法。多态分为两种,一种是行为多态与对象的多态。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
由于可以继承多个类,能够组合成多种特性,但多态的关键是覆盖,就是同一个方法可以用不同的方式去实现,展现出多态性。
—— 接口重用 -
-
主要特点是类,将所有需要执行的功能和函数拆分,进行分类,封装到不同的类中,程序执行过程中,通过不同的类的或类的对象调用不同的函数完成程序的运行。
-
把一个事件的执行过程变成了类和类中功能的交互,也就是不同对象之间的交互。通过对象来解决问题。
-
建立对象的目的不是为了完成某个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
-
易维护、易扩展
面向过程编程:
-
以过程为中心的编程思想,分析出解决问题的步骤,用函数把这些步骤实现,然后通过主函数按照顺序依次调用子函数一步步实现
-
特点是 过程化和模块化,数据和对数据的操作是分离的。注重于编程的步骤
-
执行效率高,面向过程不需要封装类再实例化调用,只用定义函数和调用,执行效率高一些。
-
不易维护
总结:两种编程方式主要是在于思考问题的方式不同,没有绝对的好与不好,关键在于问题的场景更适合用哪种思想。
对于简单应用场景: 二者实现差别不大,但因为需求简单,相比之下面向过程编程更具有优势,只有一条主线,易划分步骤实现。
对于复杂应用场景: 大规模程序开发,整个程序处理错综复杂,并非只有一条主线。面向对象更合适。
实际上,利用面向过程编程语言,我们照样可以写出面向对象编程风格的代码,只不过可能比用面向对象编程语言来写面向对象编程风格的代码付出的代价要高一些。而且,面向过程 编程和面向对象编程并非完全对立。在很多软件开发中,尽管我们利用的是面向过程编程语 言,但也借鉴了面向对象编程的一些优点。