面向对象的三大特征--继承
什么是继承?
继承父母的愿望,继承父母的财产。。。。
继承火的意志~
计算机中继承:
面向对象中的继承就表示一个类获取另外一个类的成员的操作。(并非所有成员)
继承相关的概念:
被其他类继承的类,这个类叫做父类,也叫做基类或者超类
继承其他类的类,这个类叫做子类,也叫做派生类
继承的意义:
提高代码的重用率,建立新的类与类的关系,方便其他逻辑操作。
继承的格式:
class 父类:
pass
class 子类(父类):
pass
继承的特征:
1.在不指定父类的情况下,所有的类均继承自object类(系统提供的!)
2.子类继承父类就具有父类的所有成员。
3.子类继承父类,不会将父类成员复制到子类中,子类如果需要成员,可以找父类索取!
4.私有化的成员,允许在子类中单独建立一份,不会找父类索取私有成员
5.子类可以根据需求添加自己独有的成员来进行操作。
6.子类重载父类的成员。仅仅是对子类/对象有效。并不会影响父类
7.子类在重载父类的方法的时候,可以调用父类的方法来进行操作:
super().父类方法名() -> 必须是带有self的对象方法才可以使用
父类名.父类方法名() -> 任何方式都允许
继承的特性和实例
1 #继承的特性和实例 2 #父类 3 class Father(object): 4 #成员属性-------------------------------------------------- 5 familyname = '刘' #姓氏 6 __firstname = '备' #名字 7 sex = '男' #性别 8 age = 48 #年龄 9 color = '黄色'#肤色 10 #媳妇进行私有化操作 11 __wife = ('甘夫人','糜夫人','孙尚香') 12 13 #成员方法-------------------------------------------- 14 #吃饭 15 def eat(self): 16 print('甜甜圈,咖啡,面包,方便面~') 17 #跑 18 def run(self): 19 print('拔起腿就跑~') 20 #做鞋 21 def makeshoes(self): 22 print('做草鞋') 23 24 #打印Father类的成员 25 #print(Father.__dict__) 26 #输出结果:{'__module__': '__main__', 'familyname': '刘', '_Father__firstname': '备', 'sex': '男', 'age': 48, 'color': '黄色', '_Father__wife': ('甘夫人', '糜夫人', '孙尚香'), 'eat': <function Father.eat at 0x00000269B4DDD7B8>, 'run': <function Father.run at 0x00000269B4DDD840>, 'makeshoes': <function Father.makeshoes at 0x00000269B4DDD8C8>, '__dict__': <attribute '__dict__' of 'Father' objects>, '__weakref__': <attribute '__weakref__' of 'Father' objects>, '__doc__': None} 27 28 #声明一个子类 29 class Son(Father): 30 #父类私有化之后,子类独自添加的成员 31 firstname = '禅' 32 #添加子类独有的成员 33 weight = '200斤' 34 35 #做鞋(父类已经具有) 这个操做称之为方法重载 36 def makeshoes(self): 37 #重新定义功能即可 38 print('做皮鞋,不是人造革,是真的皮') 39 40 41 #跑路(重载父类的操作->在覆盖的同时还要使用原有内容) 42 def run(self): 43 #添加一个操作 44 print('穿上鞋子') 45 46 #调用以下父类的跑路方法(方法1) 47 #super().run()#暂时可以认为super表示寻找父类 48 49 #用以下父类的跑路方法(方法2) 50 Father.run(self) 51 52 #添加一个操作 53 print('好汉饶命') 54 55 #打印子类的成员 56 #print(Son.__dict__) 57 #输出结果:{'__module__': '__main__', 'firstname': '禅', 'weight': '200斤', 'makeshoes': <function Son.makeshoes at 0x00000269B4DDD950>, 'run': <function Son.run at 0x00000269B4DDD9D8>, '__doc__': None} 58 59 #实例化子类的对象 60 ls = Son() #子类的对象 61 #访问子类的姓氏 62 #print(ls.familyname) 63 #输出结果:刘 64 65 #print(ls.sex) 66 #输出结果:男 67 68 #print(ls.age) 69 #输出结果:48 70 71 #ls.makeshoes() 72 #输出结果:做皮鞋,不是人造革,是真的皮 73 74 #私有成员,仅仅允许原有类和原有类的对象访问,子类也不可以继承或者访问。 75 #print(ls.__wife) 76 #输出结果:AttributeError: 'Son' object has no attribute '__wife' 77 78 #私有化性名 79 #print(ls.firstname) 80 #输出结果:禅 81 82 #访问子类独有的成员 83 #print(ls.weight) 84 #输出结果:200斤 85 86 #访问做鞋功能 87 #ls.makeshoes() 88 #输出结果:做皮鞋,不是人造革,是真的皮 89 90 #访问跑的方法 91 ls.run() 92 ''' 93 输出结果: 94 穿上鞋子 95 拔起腿就跑~ 96 好汉饶命 97 '''