面向对象程序设计五

面向对象程序设计五,第1张

  • 父子类关系是面向对象程序设计中不可缺少的一部分,本文通过类比方法引入父子类继承的概念
  • 并在理论基础上提供步步解析的详细示例,适合新手学习、老手复习

ps:建议新手看完类比概念后先简单过一遍示例,最后回头看语法之后,再过一边示例,有利于更好理解其性质特点

  • 父子类关系
    • 概念
      • 父类
      • 子类(继承父类属性+行为,同时有自己属性/行为/属性+行为)
      • eg.
        • 父类:属性:西瓜;行为:解渴
        • 父类的继承子类A:属性:有籽,西瓜;行为:解渴
        • 父类的继承子类B:属性:无籽,西瓜;行为:解渴
    • 子类继承父类
      • 子类实例使用父类实例属性情况
      • 语法:四步走
      • 子类名后添加父类名+括号
        • class Student(Human):
      • 子类实例属性添加父类实例属性变量
        • def __init__(self, weight, height, hobby):
      • 子类构造函数内添加继承语句,并且键入父类实例属性变量(weight,height)
        • super().__init__(weight, height)
      • 实例化赋予父类实例属性(63,178)+子类实例属性('basketball')
        • A = Student(63,178,'basketball')
      • 若在第三步中,提前赋予父类实例属性,则第四步只要赋予子类实例属性(后续代码有演示)
# 语法实例:
# 定义父类:
class Human:
    goal = 'love and peace'    # 父类属性
    def __init__(self, formweight, formheight):
        self.weight = formweight    # 建立父类实例属性weight
        self.height = formheight    # 建立父类实例属性height
    def Run(self):    # 建立父类方法
        print('成功调用父类的方法')
# 定义继承父类的子类:
# 情况1:
# 子类实例未使用父类实例的实例属性
# 子类仅使用父类的类属性、方法
class Student(Human):    # 类命名格式多了(Human),表示Student继承于Human类
    S = '99'    # 定义子类特有的子类类属性
    def __init__(self, formhobby):    # 开始构造子类实例
        self.hobby = formhobby    # 建立子类实例特有的实例属性hobby
        print('继承的父类-类属性为', self.goal) # 子类实例使用父类的类属性
        self.Run()    # 子类实例使用父类方法
        print('子类实例的字典:', self.__dict__)  # 检验是否存入子类实例dict中
A = Student('basketball')    # 子类实例化,basketbll传入子类实例属性hobby
# 输出结果:
# 继承的父类-类属性为 love and peace    
# 成功调用父类的方法    
# 子类实例的字典: {'hobby': 'basketball'}
# --------------------------------------------------------------------------------
# 第17行结果,说明子类实例可以调用父类类属性goal
# 第18行结果,说明子类实例可以调用父类的方法Run
# 第19行结果,说明子类实例的字典dict里无父类类属性goal,无子类类属性S,但却可以调用
# 说明父子类继承后子类实例仍然遵循,实例仅访用类的机制
# 个人理解:因为子类是继承于父类,拥有父类的一切属性和功能,并且有自己新的属性和功能
# 相当于子类是父类的加强版,类比:手机1可以打电话,手机2是手机1的升级版可以打电话+短信
# 导出结论:
# '子类继承父类过程' 和 '类实例化' 的区别:
# 前者称:继承(特点:存储上级的一切)
# 后者称:仅访用(特点:可以访问使用上级功能,但不存储在dict里)
# 定义继承父类的子类:
# 情况2:
# 子类实例使用父类实例的实例属性
# 子类使用父类的类属性、方法
class Student(Human):    # 表示继承关系
    def __init__(self, fatherw, fatherh, formhobby):    # 设置2+1参数入口
        super().__init__(fatherw, fatherh)    # 利用父类的构造函数添加子类的实例属性
        self.hobby = formhobby    # 建立子类实例特有的实例属性hobby
        print('录入的信息有:', self.weight, self.height, self.hobby)
A = Student(63,178,'basketball')
# 输出结果:
# 录入的信息有: 63 178 basketball

⭐看到这里了,如果觉得文章不错的话,就一键三连吧⭐

⭐有有疑问欢迎评论区留言、私信博主羽十八ya交流⭐

⭐你的支持会给博主更新blog带来巨大滴动力!Thank you!⭐

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/740862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存