继承:面向对象的一个非常重要的特征,通过一个类型对另一个类型的继承,达到代码重复利用的目的,同时提高了代码功能的扩展性
继承的语法:class 类型(父类):
pass
一切皆对象:所有的类型,都是直接或者间接继承自object对象
1.1继承
父类:被继承的类,称为父类,也称为基类、超类
子类:继承了父类的类,称为子类,也称为派生类
子类拥有父类的公共属性和公共方法
案例:鲁智深是天神下凡
class God():
def __init__(self,name):
self.name = name
def eat(self):
print("修炼,吸天地之灵气,日月之精华···")
class LZS(God):
def drink(self):
print("去青楼,喝花酒·····")
class TianPeng(God):
z = LZS("鲁智深")
z.eat()
z.drink()
bajie = TianPeng("八戒")
bajie.eat()
Paste_Image.png
1.2继承父类,继承父类
子类继承父类,父类还可以继承父类
子类拥有所有父类的公共属性和公共方法
提高了代码功能的复用性
1.3 多继承
一个子类,可以同时继承多个父类
多继承,反应了生活中表现的多个角色
子类可以同时使用多个父类的属性和方法
父类中出现相同属性或者方法,优先继承权
类名称.mro:查看属性/方法搜索顺序
尽量不要在多个类中出现名称相同的属性和方法
定义了一个基础类
class Person(object):
def __init__(self):
self.__name = "tom"
class Student(Person):
def eat(self):
print("吃食堂···")
def respect(self):
print("尊师重道")
class Son(Person):
def eat(self):
print("吃零食···")
def fealty(self):
print("孝敬长辈")
class User(Son ,Student):
def play(self):
print("玩游戏")
u = User()
u.play()
u.respect()
u.fealty()
u.eat()
print(User.__mro__)
Paste_Image.png
1.4 方法重写
方法重写:子类重新定义父类中存在的方法
重写体现了子类的独立性和可变性(多态)
方法重写的条件
继承的关系
父类存在的方法
子类重新定义
classGod(object):
def__init__(self,name):
self.name=name
defeat(self):
print("修炼,吸天地之灵气,日月之精华···")
classLZS(God):
def drink(self):
print("去青楼,喝花酒·····")
classTianPeng(God):
def eat(self):
print("一顿吃十大碗饭····")
def drink(self):
print("喝汤")
z=LZS("鲁智深")
z.eat()
z.drink()
bajie=TianPeng("八戒")
bajie.eat()
bajie.drink()
Paste_Image.png
网友评论