Python中 什么是面向对象-继承和多态

文字有点长,对于不想看文字的朋友,可以去这里看视频,内容和这个文字一样的,视频可能更好理解 www.piqizhu.com/v/zaX9K4pd4…

上一篇文章《脾气猪-Python中什么是面向对象-封装》,我们介绍了面向对象的第一个特性:封装

本篇我们开始介绍面向对象的第二、第三个特性:继承和多态

面向对象-继承和多态

继承是面向对象的第二个特性、多态是面向对象的第三个特性

由于继承和多态这两个特性关系比较暧昧,所以必须要放在一起讲解

要解释继承和多态,我不得不给大家讲一个故事《女娲造人》

我相信大多数人都没有听过这个故事

传说,很久以前,地球上是一片荒芜,没有人类,没有树木,没有动物,什么都没有

突然出现了一个神仙,她叫女娲,她发现这个世界什么都没有,空空荡荡的

当然 本来什么都没有的世界,究竟是怎么出现女娲的,我也不知道

由于这个世界太安静,太寂寞了,于是女娲就在心里构思,要创造一些东西

于是她就在脑海里 构思了这样一个东西, 物种设计方案

但是她觉得,这个设计不够细致, 于是她完善了一下自己的构思 在物种设计方案 的基础上,她重新完善了一下,做成了一个 动物设计方案

这个动物设计方案,增加了眼睛,嘴巴,还增加了 可以吃东西,可以跑,可以叫的能力

但是这个设计方案,还是不够细致,不够具体

于是,女娲又在 动物设计图方案的基础上,设计出了 第一个较为详细的设计方案,人类设计方案

这时候女娲觉得如果世上只有人类的话,还是太孤独了,

于是,女娲, 根据 动物设计方案, 设计了 鸭类设计方案, 狗类设计方案, 猫类设计方案

继承

到这里,已经有了 比较详细的4种设计方案了,你有没有发现,这4种设计方案有几个共同点?

这4种设计方案中的东西,都有四肢,都有2个眼睛,1个鼻子,1个嘴巴

他们还可以吃东西,可以跑,可以叫

而且,这4个设计方案的某些特征,也存在于 在上一张 动物设计方案 中,这就是 面向对象的第二个特征,继承

那么究竟什么是继承呢?

这4个设计方案,是基于 动物设计方案,完善优化而来, 动物设计方案的几个特性,我们沿用到了人类设计方案、鸭类设计方案、狗类设计方案、猫类设计方案 中

我们可以认为,这4个设计方案,是 动物设计方案的子女; 也可以认为,动物设计方案,是这4个设计方案的父亲, 这4个设计方案,继承了它们父亲的一些特征,比如可以吃东西,可以跑,可以叫

同样,这张动物设计方案,也继承了最开始的那张物种设计方案,他和物种设计方案,也是父子关系

换成生活中的例子,你继承了你父亲的某些特征,你父亲继承了你爷爷的某些特征

这就是继承

现在你 理解继承的特性了吗?

多态

接下来说说,面向对象的另外一个特性, 多态

这4个设计方案,他们彼此之间,有很多相同的特性,比如,都有身高体重,都有2个眼睛,1个鼻子,都可以叫,都可以走,都可以跑

但是你发现了吗?

就拿 这个特点来说,

  • 鸭子是怎么叫的, 嘎嘎嘎

  • 狗是怎么叫的, 汪汪汪

  • 猫是怎么叫的 喵喵喵

  • 人是怎么叫的呢 啊啊啊~~~~

发现了吗? 虽然他们都从父设计图那 继承了 这个特性, 但是他们各自的叫法是不同的

这就叫 多态, 多态就是 从父亲那里继承来的 同一个的行为, 孩子们各自的表现状态不一样

再来举例,

同样是 从父亲那里继承的吃饭 这2个特性, 你会发现, 人,鸭子,狗,猫,跑 和吃饭 的样子都不一样, 所以对于跑和吃饭这2个特性, 也是多态的

现在你明白什么叫多态了吗?

你可以认为,多态就是 同样的行为,后代们有多种不同的状态

以上, 就是面向对象的继承和多态

应该使用面向过程,还是面向对象

在我看来,面向过程和面向对象并不是对立的,并非一黑一白,一正一邪

在实际的应用中,不论怎样,面向过程都少不了

面向对象则是在事情有些复杂的时候,你可以考虑使用,当然,你也可以选择不用

不论多么复杂的项目,面向过程的思维,永远都必不可少,因为它是面向对象思路的基石

我们使用面向对象的时候,其实内部封装的,就有面向过程的思维

它们两者,是你中有我,我中有你的状态

我知道这样说,你可能会更加糊涂

请记住,你并不需要二选一,你可以两个都选,或者任选其一

如何选择,完全取决于你面对的事情而定

但请记住,打蚊子不要用大炮,用蚊拍就可以了

转载于:https://juejin.im/post/5cc1ab956fb9a031fd63432b

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值