美文网首页
面向对象——继承

面向对象——继承

作者: 一念之间789 | 来源:发表于2017-07-29 15:52 被阅读0次

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

    相关文章

      网友评论

          本文标题:面向对象——继承

          本文链接:https://www.haomeiwen.com/subject/cicclxtx.html