zoukankan      html  css  js  c++  java
  • 继承

    继承

    1.什么是继承?

    继承指的是新建类的方法,新建的类称之为子类或派生类

    子类继承的类叫父类,也被称作基类或超类

    子类可以继承父类的属性(特征与技能),并且可以派生出自己的特征和技能

    在python中,一个子类可以有多个父类,但是其他语言中一个子类只能继承一个父类

    2.为什么要继承

    继承的目的是为了减少重复的代码

    3.如何实现继承

    1.首先要确定好谁是子类,谁是父类

    2.在定义类的时候,在子类后面加括号,括号里写父类名即可实现继承

    class animal:
        def __init__(self,footnum):
            self.footnum=footnum
        def roar(self):
            print('awwwww!')
    class dog(animal):
        def __init__(self,name,age,footnum):
            self.name=name
            self.age=age
            animal.__init__(self,footnum)
        def roar(self):
            print('Bark!')
    class shiba_inu(dog):
        def __init__(self,name,age,footnum,eyes):
            dog.__init__(self,name,age,footnum)
            self.eyes_colour=eyes
    
    
    kono=shiba_inu('dio',3,4,'blue')
    print(kono.roar())
    print(kono.eyes_colour)
        
    

    查询顺序

    在内存查找数据时,会首先查询自己有没有,然后去查找子类有没有,再去查找父类,如果都没有就会报错

    寻找继承关系

    如何寻找继承关系:

    ​ 想要寻找继承关系,首先要“先抽象,再继承”

    那什么是抽象?

    ​ 抽象指的是抽取相似的部分

    -先抽象(抽象思想):

    ​ 奥巴马--》马类--》动物类

    ​ 麦兜--》猪类--》动物类

    ​ 史努比--》狗类--》动物类

    ​ 抽象定义的动物类,我们称之为父类

    ​ 拥有动物都有的特征和技能

    -再继承(在程序中):

    ​ 奥巴马--》调用马类--》继承动物类

    ​ 麦兜--》调用猪类--》继承动物类

    ​ 史努比--》调用狗类--》继承动物类

    继承的关系

    ​ 对象是特征与技能的结合体

    ​ 类是一系列对象相同的特征与技能的结合体

    ​ 继承是一系列类相同的特征与技能的结合体

    在继承背景下,对象属性的查找顺序:

    ​ 1.对象查找属性会先从对象的名称空间中查找

    ​ 2.若对象没有,则会去类里面查找

    ​ 3.若当前类是子类,并且没有对象找的属性,会去父类中查找

    ​ 注意:对象查找属性,若子有,不管父类有没有,以子类为准

    class Foo:
        def f1(self):
            print('Foo.f1')
    
        def f2(self):
            print('Foo.f2')
            self.f1()
    
    class Soo(Foo):
        def f1(self):
            print('Soo.f1')#如果这一行被注释的话会输出第二种
    
    soo_obj=Soo()
    soo_obj.f2()
    
    '''第一种
    Foo.f2
    Soo.f1
    '''
    
    '''第二种
    Foo.f2
    Foo.f1
    '''
    
    

    如果子类继承父类的__init__毫无意义

    解决方案有两种,

    一种是直接通过父类.调用__init____init__当作普通函数使用,传入对象与继承的属性

    还有一种是 super

    钻石继承

    就是从你爸那边继承钻石矿

    钻石继承亦有两种 有**经典类**和**新式类**

    经典类优先深度

  • 相关阅读:
    几个简单递归js 实现
    js中阻止事件冒泡
    判断是否IE 最酷的代码
    C# Hashtable 读取 key 和 value
    ubuntu搭建jdk+jenkins
    Shell逻辑运算符及表达式
    Linux命令的返回值
    python调用c/c++时传递结构体参数
    Git错误总结
    Bash Shell中命令行选项/参数处理
  • 原文地址:https://www.cnblogs.com/jimGraymane/p/11650598.html
Copyright © 2011-2022 走看看