面向对象——继承

2017-07-29  本文已影响0人  一念之间789

继承:面向对象的一个非常重要的特征,通过一个类型对另一个类型的继承,达到代码重复利用的目的,同时提高了代码功能的扩展性
继承的语法: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
上一篇 下一篇

猜你喜欢

热点阅读