面向对象三大特性:
- 封装: 根据职责将属性和方法封装到一个抽象的类中
- 继承: 实现代码的重用 相同的代码不需要重复的编写
- 多态: 不同的对象调用相同的方法 产生不同的执行结果 增加代码的灵活度
继承:子类拥有父类的所有方法和属性
继承的语法:
class 类名(父类名):
pass
子类继承父类,可以直接享受父类中已经封装好的方法,不需要再次开发
子类中应该根据职责,封装子类特有的属性和方法
class Animal:
def eat(self):
print("吃")
def drink(self):
print("喝")
def run(self):
print("跑")
def sleep(self):
print("睡")
class Dog(Animal):
def bark(self):
print("汪汪叫")
wang_cai = Dog()
wang_cai.eat()
wang_cai.drink()
wang_cai.run()
wang_cai.sleep()
wang_cai.bark()
专业术语:
- Dog类是Animal类的子类, Animal类是Dog类的父类,Dog类从Animal类继承
- Dog类是Animal类的派生类,Animal类是Dog类的基类,Dog类从Animal类派生
继承的传递性:
- C类从B类继承,B类又从A类继承,那么C类就具有B类和A类的所有属性和方法
- 子类拥有父类以及父类的父类中封装的所有属性和方法
class Animal:
def eat(self):
print("吃")
def drink(self):
print("喝")
def run(self):
print("跑")
def sleep(self):
print("睡")
class Dog(Animal):
def bark(self):
print("汪汪叫")
class XiaoTianQuan(Dog):
def fly(self):
print("我会飞")
wang_cai = Dog()
wang_cai.eat()
wang_cai.drink()
wang_cai.run()
wang_cai.sleep()
wang_cai.bark()
xtq = XiaoTianQuan()
xtq.eat()
xtq.bark()
xtq.fly()