美文网首页
继承、多态

继承、多态

作者: p712long | 来源:发表于2018-02-07 10:24 被阅读0次

    class A:

        print("First A")

        def __init__(self,a):

            print("A")

        print("First A1")   

    class B:

        print("First B")

        def __init__(self,a,b):

            print("B")

    class D(A,B):# 当我们在实例化子类时,则会先初始化继承的父类

        print("D")

        def __init__(self,a,b,c):

            super(D,self).__init__(a)

            self.c=c

    d = D(1,2,3) #实例化子类

    # First A

    # First A1

    # First B

    # D

    # A   

    (1) 一个类可以不继承任何类,也可以继承一个类或多个类;

    (2) 无论父类中有多少个__init__方法,只会执行其中1个;

    (3) 子类可以覆盖父类中的属性或方法;

    (4) 当我们在实例化子类时,则会先初始化继承的父类,父类的执行顺序按照从左到右顺序执行;

    多态(polymorphic)必须满足三个条件:

    (1) 继承;

    (2) 重写;

    (3) 父类对象指向子类实例;

    class Animal:

        def __init__(self, name):

            self.name = name

        def talk(self): 

            pass

        @staticmethod ####如果硬要说多态,建议使用静态方法来处理,而非普通函数

        def animal_talk(obj):

            obj.talk()

    class Cat(Animal):

        def talk(self):

            print('喵!')

    class Dog(Animal):

        def talk(self):

            print('wang')

    d = Dog("小黑")

    c = Cat("小白")

    # def animal_talk(obj):

    #    obj.talk()    ###这也是一个能实现功能的函数,因此python多态才具有争议性

    Animal.animal_talk(c)

    Animal.animal_talk(d)

    相关文章

      网友评论

          本文标题:继承、多态

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