什么是继承?

在生活中,大家都应该听过这个词,比如儿子继承他老子的财产,那么在python中也有继承,但是有不少人比较难理解继承这个东西。
在python,所有的类都默认继承object类,因此object类也被称为基类,其他的类称为派生类,在python中继承就是 子类可以继承父类中的所有的非私有方法

什么是私有方法?

是指在 Python 的面向对象开发过程中,对象的某些方法或者称为函数只想在对象的内部被使用,但不想在外部被访问到这些方法或函数。
即:私有方法是对象不愿意公开的方法或函数。
同理 私有属性也是类同
那么用一个简单的代码来理解一下

# 1. 定一个一个公共性类 (
class   Person():# 定义__init__初始化方法def __init__(self,name,age,adress):self.name = nameself.age = ageself.adress = adressdef eat(self):print('i can eat food!')def speak(self):print('i can speak!')# 定义个性类
class Teacher():def __init__(self,name,age,adress):self.name = nameself.age = ageself.adress = adressdef eat(self):print('i can eat food!')def speak(self):print('i can speak!')def __write(self):print('i can wirte')# 定义个性类 Student  继承person类,发现也可以调用成功
class Student(Person):passp = Person('snail',21,'贵州')
teacher = Teacher('tom',10,'贵州')
s1 = Student('xiaowu',87,'四川')
s1.eat()
s1.speak()# 继承可以继承父类中的所有非私有方法, 也就是这里的`__write`方法将不会被继承 `__` 是python中私有方法的语法定义 

那么执行后你会发现即使Student类中并没有定义eat()方法和speak()方法 但是也同样能够输出 这就是继承
继承的语很简单 直接在类后面的括号里面跟上需要继承的类即可。

例如:

class B(object):pass  # 这里自己写需要的方法class A(B):passa = A()
a.B中所有公共方法。

那么我们想在父类继承来的方法里面执行子类的特有的代码怎么办,
这里就引入了新的名词重写

那么什么是重写呢?

我的理解是,从父类继承过来,只有父类的方法和属性,那么我自己想要在父类的基础上面修改方法和属性该怎么办呢,那么重写就是用来解决这个问题的。 也就是继承后,可以进行修改继承来的方法, 如果有系统的属性和方法,进行重写, 也就是从父类继承来的方法会进行重新定义。
例:

class Animals(object):def eat(self):print('i can eat')def call(self):print('i can call phone ')class Dog(Animals):def eat(self):print(' i like eat gutouts')class Cat(Animals):def eat(self):print('i can 捉老鼠')wangcai = Dog()
wangcai.eat()
wangcai.call()miao = Cat()
miao.eat()
miao.call()

运行后便可以理解什么是重写了,也就是不同的类继承同一个父类后,进行方法的重写,之后执行的结果与父类和另外的子类的结果不同。
那么问题又来啦,既然我们对父类的方法进行重写了,那如果我们还需要调用父类的方法,那该怎么办呢,对此,python引入了super()方法

super():调用父类的方法或属性,完整写法: super().属性 或者super.方法 就可以完成调用了

调用例字:

class Car(object):def __init__(self, brand, model, color):self.brand = brandself.model = modelself.color = colordef run(self):print('i can run')class GasolineCar(Car):def __init__(self, brand, model, color):super().__init__(brand, model, color)def run(self):print('i can run with gas')class ElectricCar(Car):def __init__(self, brand, model, color):super().__init__(brand, model, color)# 代表电池电量。self.battery = 70def run(self):print(f'i can run whith electric,remind{self.battery}')bmw = GasolineCar('宝马', 'x5', '白色')
bmw.run()tesla = ElectricCar('特斯拉', 'model3', '红色')
tesla.run()

这里用车来做例子,我们发现我们这里都是用的父类的方法对车进行初始化的。也就是我们在子类中并没有重新写初始化的方法。而是调用父类中的。

1.什么是多态

多态指的是一类实物有多种形态,
定义 多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果;

  1. 多态依赖继承
  2. 子类方法必须要重写父类方法。
    首先定义一个父类,其可能拥有多个子类对象,当我们调用一个公共方法时,传递的对象不同,则返回的结果不同。
    好处,调用灵活,有了多台,可以更容易编写出通用的代码,做出通用的编程,以适应需求的不断变化。、

不同对象访问相同方法,返回不同结果 就是多态

代码实现。
多态可以基于继承,也可以不基于继承。

class Fruit(object):def makejuice(self):print('i can make juice ')class Apple(Fruit):def makejuice(self):print('i can make  apple juice ')class Banana(Fruit):def makejuice(self):print('i can make Banana juice ')class Orange(Fruit):def makejuice(self):print('i can make Orange juice ')# 利用多态。  定义一个service  公共方法接口
def service(obj):obj.makejuice()# apple = Apple()
# apple.makejuice()  # 以往的方式,需要用一个调用一个
# banana = Banana()
# banana.makejuice()  # 橘子也是 一样
# orange = Orange()
# orange.makejuice()# 利用接口
apple = Apple()
banana = Banana()
orange = Orange()
for i in (apple,banana,orange):service(i)

这里的service就是多态的体现。

python的继承和多态相关推荐

  1. python中继承和多态

    继承和多态 继承 引入继承 我们有这样一个需求 模仿英雄联盟定义两个英雄类1.英雄要有昵称.攻击力.生命值属性2.实例化出两个英雄对象3.英雄之间可以互殴,被殴打的一方掉血,血量小于0则判断为死亡 那 ...

  2. python完全支持面向对象编程思想_面向对象的编程思想和Python的继承和多态,特殊方法,引用计数...

    面向对象的编程思想和Python的类,访问和属性,继承 在上一文中我们了解到了,私有的属性的访问方式:实例名._类名__私有属性名. 一.私有的属性如何对外提供公有的取值和赋值方法呢?提供公有的方法作 ...

  3. Python基础——继承、多态

    文章目录 一.slots 二.私有属性和私有方法 三.继承 1.私有属性.私有方法 2.继承的特点(多层继承) 3.新式类和经典类 四.方法的重写 五.多态 一.slots __slots__属性对应 ...

  4. python的继承与多态

    一,继承 class Person(object):def __init__(self, name, sex):self.name = nameself.sex = sexdef print_titl ...

  5. Python中的继承和多态

    本文以生活中的基础现象为切入点,主要介绍了Python基础中继承和多态,包括单继承.多继承的语法.多态常见的 "鸭子类型". 以及如何重写父类的方法都做了详细的讲解. 一.继承的介 ...

  6. python 继承和多态

    python 继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Ba ...

  7. Python面对对象编程——结合面试谈谈封装、继承、多态,相关习题详解

    1.面向对象的三大特征 封装:属性和方法放到类内部,通过对象访问属性或者方法,隐藏功能的实现细节.当然还可以设置访问权限; 继承:子类需要复用父类里面的属性或者方法,当然子类还可以提供自己的属性和方法 ...

  8. 【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态

    这一周Python语言学习,记录如下. 01 面向对象编OOP 1.1 为什么学习和应用OOP? 1 OOP适合更加复杂的需求分析和项目开发. 2 OOP具有更强大的封装能力. 3 OOP相比于面向过 ...

  9. python多态_Python 简明教程 21,Python 继承与多态

    程序不是年轻的专利,但是,它属于年轻. 目录 目录 我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制. 1,封装 在这一节介绍类的私有属性和方法的时候,我们已经讲到过封 ...

最新文章

  1. Photoshop五步制作水晶按钮
  2. R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句
  3. python 亮度一致_Python玩转各种多媒体,视频、音频到图片
  4. 手把手教你ARC——iOS/Mac开发ARC入门和使用
  5. [路由] -- Yii2 url地址美化与重写
  6. node-sass -v 不是内部_奔驰v260领航版的缺点奔驰v级和威霆区别
  7. python装饰器补充
  8. dropbox文件_Dropbox即将发布的扩展程序更新将添加更多文件编辑支持,包括Pixlr照片...
  9. APUE 12.7 取消选项
  10. 缓存学习中未命中的缓存情况的处理
  11. 利用程序动态管理Web.config文件
  12. 潜安 | 分享最新最前沿的IT教程
  13. [渝粤教育] 湘潭大学 计算机组成与体系结构 参考 资料
  14. java 生成32位字符串
  15. 【转】【信息学奥赛一本通】题解目录
  16. 2022-2027年中国OLED发光和传输材料市场规模现状及投资规划建议报告
  17. uboot中展示gpio接口的驱动
  18. 用python画分析曲线图
  19. 用Ps将PSD切片并将切片保存为透明背景的图片
  20. PHP获取微信用户手机号

热门文章

  1. NTP网络时间服务器(北斗授时设备)应用平安城市天网工程
  2. TNG AV-298 功放修理
  3. MFC中解决回车和ESC关闭的问题,重载OnOk(),OnCancel()函数的正确做法
  4. Python调用百度地图
  5. 【loj】#6004. 「网络流 24 题」圆桌聚餐(二分图匹配)
  6. 酷家乐 x StarRocks:3D云设计SaaS独角兽如何降本增效、统一离线和实时分析
  7. Pycharm定制外观:
  8. python pandas loc 条件_python – pandas:填写nans给出的条件
  9. C#技巧:网页表单自动填写技术
  10. SVN还原文件到历史版本详解