Python 知识要点:继承
面向对象的三个特性:
- 封装,根据职责将属性和方法封装到一个抽象的类中。(定义类的准则)
- 继承,实现代码的重用,相同代码不需要重复的编写。(设计类的技巧)
- 多态,不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度。
单继承
子类拥有父类的所有方法和属性。
语法:class 类名A(父类名B):
子类继承自父类,可以直接使用父类中已经封装好的方法,不需要再次开发。
子类应该根据职责,封装子类特有的属性和方法。
A类是B类的子类,B类是A类的父类,A类从B类继承。
A类是B类的派生类,B类是A类的基类,A类从B类派生。
【继承的传递性】
C类从B类继承,B类又从A类继承,那么C类就具有B类和A类的所有属性和方法
子类拥有父类,以及父类中封装的所有属性和方法
多继承
子类可以拥有多个父类,并且具有所有父类的属性和方法
语法:class 子类名(父类名1, 父类名2, ...):
【注】:父类之间存在同名的属性或方法,应该尽量避免使用多继承
【不使用继承开发动物和狗】
class Anima: def eat(self): print("吃") def drink(self): print("喝") def run(self): print("跑") def sleep(self): print("睡") class Dog: def eat(self): print("吃") def drink(self): print("喝") def run(self): print("跑") def sleep(self): print("睡") def bark(self): print("叫") dog = Dog() dog.bark() dog.drink() dog.eat() dog.run() dog.sleep()
【使用继承开发动物和狗】
class Anima: def eat(self): print("吃") def drink(self): print("喝") def run(self): print("跑") def sleep(self): print("睡") class Dog(Anima): def bark(self): print("叫") class HaShiQi(Dog): def fly(self): print("飞") # 子类方法重写 def bark(self): # 1.子类特有需求代码 print("汪汪汪") # 2.使用super(). 调用原本父类中封装的方法 super().bark() # 3.增加其他子类的代码 print("f!#df @#@#!#gfg") dog = HaShiQi() # 如果子类中,重写了父类的方法 # 在使用子类对象调用方法时,会调用子类重写后的方法 dog.bark() dog.drink() dog.eat() dog.run() dog.sleep() dog.fly()
【多继承】
class A: def test(self): print("A--test 方法") def demo(self): print("A--demo 方法") class B: def demo(self): print("B--demo 方法") def test(self): print("B--test 方法") class C(A, B): """多继承可以让子类对象,同时具有多个父类的属性和方法""" pass # 创建子类对象 c = C() # 父类之间方法属性同名时,调用第一个父类的方法属性 c.test() c.demo() # 确定C类对象调用方法的顺序 # object是所有类的父类(基类) print(C.__mro__)
从现在开始,种下梦想中的参天大树