当前位置: 首页 > news >正文

Level2.11继承

一、继承

#动物#
#老虎、狮子、大象

#动物有共性
##定义一个动物:1.有4条腿;2.陆地上跑;3.需要进食(属性+能力)
##猫:同上(继承了动物的属性和能力)
##老鼠:同上#Python里面也有这种结构,class类的继承
#1#案例猫

class Animal:   #父类def run(self):print('Animal is running...')class Cat(Animal):  #子类 (子类中,填父类的名字)继承==>所有属性+方法passcat=Cat()
cat.run()

#2#练习老鼠

class Animal:   #父类def run(self):print('Animal is running...')class Cat(Animal):  #子类 (子类中,填父类的名字)继承==>所有属性+方法passclass Mouse(Animal):passcat=Cat()
cat.run()mouse=Mouse()
mouse.run()

#3#父类里面,构造函数(若父类有构造函数)

class Animal:def __init__(self,food):#父类,传参self.legs=4self.food=fooddef run(self):print('Animal is running...')class Cat(Animal):passclass Mouse(Animal):passcat=Cat("fish")#则子类,也要传参#实例化子类
print(cat.legs)
print(cat.food)#实例化#mouse=Mouse("苞谷")
#print(cat.legs)
#print(mouse.food)

#4#子类 继承 父类原因   [子类可继承+创建其他方法]
# 类比于,神话故事父亲有神力 ==传承 给自己的孩子==> 孩子出生就有父亲的所有能力(这种神力)+同时也有属于自己的能力==>后辈越来越强#5#父类里面,构造函数

class Animal:def __init__(self,food):#父类,传参self.legs=4self.food=fooddef run(self):print('Animal is running...')class Cat(Animal):def ability(self):print('the cat can catch mice')class Mouse(Animal):pass####父类不能用子类方法,报错
animal=Animal()
animal.ability()

二、 多态

#刚刚 子类 继承 父类
##子类对继承过来的情况,进行更改#动物=>1.猫 2.老鼠
#所以,[吃东西]这个类,在[动物/猫/老鼠]有不同的表现,对该功能进行重写==>多态
#多态=以继承为前提,在继承的基础上进行重构

class Animal:def __init__(self,food):#父类,传参self.legs=4self.food=fooddef eat(self):print('I like eating')class Cat(Animal):
# passdef eat(self):print('I like eating '+self.food)#多态,#     [改变子类中的方法;不影响父类中方法的内容]#同一个方法名,可以出现2种不同的形态,在类的多态中,对构造函数的[重构]#对两个对象调用eat方法,结果一样  =======>但猫吃鱼,改变结果
animal=Animal("food")
animal.eat()cat=Cat("fish")
cat.eat()#继承父类#多态:既可以改变[子类的方法],又[不改变父类方法的内容]

三、重构

#重构:保留父类属性+自己属性 [先继承,再重构]
#父类中不合适的进行重构

class Animal:def __init__(self,food):#父类,传参self.legs=4self.food=fooddef eat(self):print('I like eating')class Cat(Animal):
#---#新构造函数------------------------------------------def __init__(self,food,color):Animal.__init__(self,food)#继承父类的,构造函数(参数与父类一致)self.color=color#添加自己的属性
#------------------------------------------------------def eat(self):print('I like eating'+self.food)#多态,#     [改变子类中的方法;不影响父类中方法的内容]#同一个方法名,可以出现2种不同的形态,在类的多态中,对构造函数的[重构]animal=Animal("food")
animal.eat()cat=Cat("fish",'white')#new属性color
cat.eat()#继承父类
print(cat.legs)
#-------------------------
print(cat.color)
#--------------------------
http://www.lqws.cn/news/554527.html

相关文章:

  • Qt-Advanced-Docking-System页面布局
  • Linux通过Crontab实现自启动
  • 大数据在UI前端的应用创新研究:用户偏好的动态调整与优化
  • 深入解析 Electron 架构:主进程 vs 渲染进程
  • 论文降重怎么做?三种自动降重软件使用评测
  • Swift × Android:官方工作组成立意味着什么?
  • 英语日常词汇大全(附音标、释义、短语及例句)
  • Web基础关键_004_CSS(二)
  • cf 禁止http/1.0和http/1.1的访问 是否会更安全?
  • 函数指针与指针函数
  • 如何提取mdd字典中音频文件并转化为mp3
  • 基于社区电商场景的Redis缓存架构实战02-社区电商项目实战
  • 嵌入式单片机中SPI串行外设接口控制与详解
  • cannot import name ‘TextKwargs‘ from ‘transformers.processing_utils‘
  • git使用详解和示例
  • 蓝凌流程引擎流程图格式化实现原理全解
  • 湖北理元理律师事务所:债务优化中的法律理性与人文温度
  • Blender速成班-知识补充
  • 13-StringBuilder类的使用
  • 如何利用企业内部数据评测大模型的实际表现?
  • SpringBoot3.x整合Knife4j接口文档
  • STM32HAL 旋转编码器教程
  • ASProxy64.dll导致jetbrains家的IDE都无法打开。
  • navigation2学习笔记
  • 前后端分离实战2----前端
  • Push-T, AloHa, Rlbench三个仿真环境信息
  • c# sugersql 获取子表数据排序
  • 大一C语言期末选择题和填空题题库
  • 求职招聘小程序源码招聘小程序搭建招聘小程序定制开发
  • Kioptrix Level1