- 父子类关系是面向对象程序设计中不可缺少的一部分,本文通过类比方法引入父子类继承的概念
- 并在理论基础上提供步步解析的详细示例,适合新手学习、老手复习
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!⭐
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)