继承者们

Posted jimgraymane

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承者们相关的知识,希望对你有一定的参考价值。

继承

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

钻石继承

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

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

经典类优先深度

以上是关于继承者们的主要内容,如果未能解决你的问题,请参考以下文章

java 代码片段

推荐net开发cad入门阅读代码片段

最全最详细publiccms常用的代码片段

最全最详细publiccms其他常用代码片段(内容站点)

操作 Java 泛型:泛型在继承方面体现与通配符使用

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段