美文网首页
python3面向对象-继承

python3面向对象-继承

作者: test小星星 | 来源:发表于2018-09-19 22:55 被阅读17次

什么是继承

子承父类,就相当于把一些公共方法封装成一个类,当需要用到这个类里面的功能,就继承该类就可以使用里面的功能了。子类继承了父类也可以使用父类的父类的功能。
私用方法或属性不能被继承。

继承实例

# 创建a类继承object类(所有的类默认都是继承object类)
class A(object):

    def a_func(self):
        print('这是a类的功能')

# 创建b类,继承a类
class B(A):

    def b_func(self):
        print('这是b类的功能')
# 实例化a类(创建x对象)
x = A()
x.a_func()

# 实例化b类(创建y对象)
y = B()
y.a_func()  # 调用父类的功能
y.b_func()

运行结果

这是a类的功能
这是a类的功能
这是b类的功能

重写

子类继承了父类时,如果你觉得父类的方法不是你想要的方法,
你可以在自己的类里面写一个和父类名字一模一样的方法名,把你想要的功能从新写入。既是重。
因为程序是先找子类有没有该方法,如果没有则到父类去找,如果有的话直接使用子类的方法。

重写实例

# 创建a类继承object类(所有的类默认都是继承object类)
class A(object):

    def a_func(self):
        print('这是a类的功能')

# 创建b类,继承a类
class B(a):

    def b_func(self):
        print('这是b类的功能')

    # 重写父类方法
    def a_func(self):
        print('这是重写a类后的功能')

    # 子类重写了父类的功能,但还是想用父类的功能
    def b_func2(self):
        A.a_func(self)    # 可以通过:父类名.被重写的方法名(self):调用
        A().a_func()      # 第二种调用方式
        super().a_func()  # 第三种调用方式


# 实例化a类(创建x对象)
x = A()
x.a_func()

# 实例化b类(创建y对象)
y = B()
y.a_func()  # 此时调用的是被重写后的方法
y.b_func()
y.b_func2()

运行后的结果

这是a类的功能
这是重写a类后的功能
这是b类的功能
这是a类的功能
这是a类的功能
这是a类的功能

多继承

一个子类继承多个父类。

多继承实例

# 创建a类继承object类(所有的类默认都是继承object类)
class A(object):

    def a_func(self):
        print('这是a类的功能')

# 创建b类
class B(object):

    def b_func(self):
        print('这是b类的功能')

# 创建c类型 继承a类和b类
class C(A, B):

    def c_func(self):
        print('这是c类的功能')


# 创建z对象
z = C()
z.a_func()
z.b_func()
z.c_func()

运行结果

这是a类的功能
这是b类的功能
这是c类的功能

多继承类的方法调用顺序:首先,先找他自己的方法,如果没有则找第一个父类的方法,再找第二个父类的方法,直到object类。
print(子类名.__mro__)可以查看调用方法的顺序
注意:多继承时,被继承的父类之间不能有继承关系否则会报错!!!

相关文章

  • python3面向对象-继承

    什么是继承 子承父类,就相当于把一些公共方法封装成一个类,当需要用到这个类里面的功能,就继承该类就可以使用里面的功...

  • day3-python3类

    今天了解了python3中的面向对象编程 包括: 属性和封装 继承和多态 获取对象信息 练习代码链接:python...

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • 王艳华Pythonday03

    Python的面向对象 Java 面向对象 继承

  • Python面向对象继承

    面向对象继承 面向对象编程 (OOP),英语全称:Object Oriented Programming,面向对象...

  • java基础-day10-面向对象4.0

    面向对象4.0 1. 面向对象之继承 1.1 生活中的继承 1.2 Java中的继承 1.3 子类对象创建,会调...

  • 面对对象高级编程

    面向对象高级编程: 面向对象编程:封装、继承和多态 面向对象高级编程:多重继承、定制类和元类

  • Web前端经典面试试题及答案2

    javascript面向对象中继承实现? 面向对象的基本特征有:封闭、继承、多态。在JavaScript中实现继承...

  • JAVA语言第二课

    JAVA面向对象——四大特征 继承篇——extendsJava 继承继承的概念继承是java面向对象编程技术的...

  • js面向对象设计

    面向对象模式 继承

网友评论

      本文标题:python3面向对象-继承

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