zoukankan      html  css  js  c++  java
  • Python基础十三:面向对象编程二:继承和多态

    Python基础:面向对象编程二:继承和多态


    Python基础系列内容为学习廖雪峰老师Python3教程的记录,廖雪峰老师官网地址:廖雪峰Python3教程


    Author:yooongchun

    Email:yooongchun@foxmail.com


    • 继承和多态:在OOP程序设计中,当我们定义一个class时,可以从某个现有的class继承,新的class称为子类(subclass),而被继承的那个class称为基类(Base class)

      假设现在我们有一个名为Animal的class

      class Animal:
        def run(self):
            print('Animal is running...')

      现在我们需要构建一个新类Dog类,这样我们就可以从Animal类继承

      class Dog(Animal):

      继承有什么好处呢?最大的好处就是子类会自动拥有父类的全部功能

      >>> Animal().run()
      Animal is running...
      >>> Dog().run()
      Animal is running...

      从上面的代码可见,我们并没有为Dog类写run函数,但是他却有该函数功能,原因就是他继承了Animal类的run函数。

      观察上面的Dog函数,我们希望,他打印的信息不是Animal is running...,而应该是Dog is running...,这样,我们来对上面的Dog类做一些修改

      class Dog(Animal):
      def run(self):
            print('Dog is running...')

      调用

      >>> Dog().run()
      Dog is running...

      此时,Dog类的run函数并没有调用父类的,而是使用了在其内部定义的run方法,现在,我们获得了OOP程序设计的另一个好处:多态!

    • Python是一种动态语言。

      相比较于静态语言(如Java)来说,如果需要传入某个特定的数据类型,那么传入的参数必须是相应的数据类型或者是其子类,否则调用就会出错,但对于Python来说则大可不必如此严格,比如,对于参数需要传入Animal类型,那么实际传入的参数未必一定要是该类型,只要是拥有run方法的对象都可以,这叫动态语言的”鸭子类型”,他并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那么他就可以被看作是鸭子。

  • 相关阅读:
    关于hive Metadata 使用 MsSQL
    hdp 2.06 安装备忘
    对于自我管理 ObjectContextManager的测试
    关于 Linq to EF 的内存泄漏问题
    使用过多的递归出现错误,“System.StackOverflowException”类型的未经处理的异常在 mscorlib.dll 中发生
    PowerShell 如何 远程连接【转】
    win7系统浏览器老是自动弹出网页怎么办
    win10如何深度清理C盘
    Win7电脑系统崩溃怎么解决?
    win7磁盘打不开如何解决
  • 原文地址:https://www.cnblogs.com/yczha/p/13160231.html
Copyright © 2011-2022 走看看