面向对象三大个性:
封装:依据职责将属性和办法封装到一个形象的类中 继承:实现代码的重用,雷同的代码不须要反复的编写 多态:不同的对象调用雷同的办法,产生不通过的执行后果,减少代码的灵便度
一、问题的抛出——单纯的封装可能会呈现很多反复的代码
上面看一张图,能够看出动物类,和狗类,还有哮天犬类都有很多反复的办法代码,这样大大降低了代码的效率,产生很多反复的代码,批改代码也变得麻烦了起来。比方我要批改动物类的吃办法,那么狗类中的吃办法也要反复批改一遍很麻烦等状况,那么解决这个问题就能够用到面向对象中的继承个性来解决。
上面是不应用继承的代码:
class Animal():
def eat(self):
print("吃")
def run(self):
print("跑")
def drink(self):
print("喝")
def sleep(self):
print("睡")
class Dog():
def eat(self):
print("吃")
def run(self):
print("跑")
def drink(self):
print("喝")
def sleep(self):
print("睡")
def bark(self):
print("汪汪叫")
# 1. 创立动物类对象 - 小花狗
huagou = Animal()
# 调用办法
huagou.eat()
huagou.run()
huagou.drink()
huagou.sleep()
# 2. 创立狗类对象 - 斑点狗
bandia = Dog()
# 调用办法
bandia.eat()
bandia.run()
bandia.drink()
bandia.sleep()
bandia.bark()
执行后果:
二、继承的概念、语法和特点
1)继承的概念:
子类领有父类的所有办法和属性。
应用继承后只须要把子类中特有的属性和办法再次封装一下就能够了,而不须要其余子类中把父类的办法反复编写一遍。
2) 继承的语法:
class 类名 (父类名):
pass
3)特点:
子类继承自父类,能够间接享受父类中曾经封装好的办法,不须要再次开发 子类中应该依据职责,封装子类特有的属性和办法
应用继承批改下面的代码:
class Animal():
def eat(self):
print("吃")
def run(self):
print("跑")
def drink(self):
print("喝")
def sleep(self):
print("睡")
class Dog(Animal):
def bark(self):
print("汪汪叫")
# 1. 创立动物类对象 - 小花狗
huagou = Animal()
# 调用办法
huagou.eat()
huagou.run()
huagou.drink()
huagou.sleep()
# 2. 创立狗类对象 - 斑点狗
bandia = Dog()
# 调用办法
bandia.eat()
bandia.run()
bandia.drink()
bandia.sleep()
bandia.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 run(self):
print("跑")
def drink(self):
print("喝")
def sleep(self):
print("睡")
class Dog(Animal):
def bark(self):
print("汪汪叫")
class XiaoTianQuan(Dog):
def fly(self):
print("老子会飞,哈哈哈哈")
# 创立一个哮天犬对象
xtq = XiaoTianQuan()
# 调用办法
xtq.eat()
xtq.run()
xtq.drink()
xtq.sleep()
xtq.bark()
xtq.fly()
执行后果:
五、继承传递性的注意事项
留神:看看有没继承关系
发问:哮天犬可能调用 Cat 类中定义的 catch 办法吗?
答案:不能。尽管哮天犬类和 Cat 类都继承了 Animal 父类,然而因为哮天犬和 Cat 之间没有继承关系所以不能。
更多对于 Python 基础知识和进阶常识都能够去 Python 自学网 (www.wakey.com.cn/)学习,还有 Python 学习路线解说。