封装、继承与多态——以python为例

在介绍面向对象的三大特征之前,先简要的阐述一下面向过程与面向对象之间的区别:

一、前言:面向过程与面向对象
1.面向过程

面向过程(Process-oriented programming, pop),是一种以步骤为中心的编程思想,其就具体问题分析出相应的求解步骤,并对每一个步骤使用函数去实现,依次对函数进行调用。

2.面向对象

面向对象(Object Oriented Programming, oop),是一种以对象为中心的编程思想,其把要解决的问题分解成各个对象,并通过对象与对象之间的方法来对问题进行解决。一个对象的建立并不是为了完成类似于面向过程中的一个步骤,而是为了展现某个对象在解决整个问题的过程中所提供的属性和方法。

3.通俗的比较

上面的理论可能很难理解,下面介绍一个通俗易懂的讲解:

用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。而蛋炒饭是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。

蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。

到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。

盖浇饭的好处就是"菜"“饭"分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是"可维护性"比较好,“饭” 和"菜"的耦合度比较低。蛋炒饭将"蛋”“饭"搅和在一起,想换"蛋”"饭"中任何一种都很困难,耦合度很高,以至于"可维护性"比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

二、面向对象的三大特征:
1.封装

将属性和方法封装到类里面,通过创建的对象来访问类里面的属性和方法,将功能的具体实现细节进行隐藏,只需知道方法的功能即可进行调用。

2.继承

当有些类需要使用相同的方法(其它的类中已经定义过的方法)时,无需重新在此类中定义新的方法,只需对已有该方法的类进行继承,即可以使用该类(称为父类)中的任何方法和属性。

3.多态

不同的对象调用同一个方法时表现的形式不一样。

对于加法这个方法而言,不同的两个对象:字符串和整数,它们实现的功能是不一样的。一个是进行拼接,一个是进行相加。

三、具体分析与对比

下文的博客中,讲解分析的比较完善和透彻,因此,笔者建议直接跳至该博文进行阅读。

python的封装、继承和多态

参考内容:

面向过程与面向对象的区别

面向过程VS面向对象

面向对象与面向过程的本质的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值