专栏首页鸿的学习笔记Python和Scala的类和对象(二)

Python和Scala的类和对象(二)

继续讨论类和对象的继承和方法重写。

继承 继承类似于生物学的进化,子类通过继承父类,获得父类的性质,并且在此之上增加新的功能。在设计上,应该保证子类和父类的统一,过多的继承会导致耦合,提高复杂度。我们把前文的Book抽象类作为父类,来试一下继承。在Scala里使用extends来继承父类,NewBook继承了Book的所有非私有成员,并且使得NewBook成为Book的子类,如果没有继承Book类的话,就会默认你继承scala.AnyRef类。Python的继承,因为历史原因,存在了多继承(后续详解),它的继承直接在()写上父类的名字,与Scala的类类似,所有的类都是object类的子类。 Scala

class NewBook(conts: String) extends Book {
    def openBooks: String = conts
  }

Python

class NewBook(Books):

    def __init__(self, conts):
        self.conts = conts

    def open_books(self):
        return self.conts

4.方法重写 方法重写要保证和你要重写的方法输入类型和输出类型一致。Scala要重写父类的方法,可以加上override符号,在之前的文章也使用过,覆写toString方法。用来重写父类的具体成员之前加上这个修饰符。Python只要保证方法名一致即可重写。不过注意,当你重新改写父类的某个方法时,要注意对子类的影响,否则你写的基类就成了“脆弱基类”。 Scala

class A {
    def a:String = "a"
  }

class B extends A {
    override def a: String = "b"
  }

Python

class A:

    def a(self):
        return 'a'

class B(A):

    def a(self):
        return 'b'

本文分享自微信公众号 - 鸿的学习笔记(shujuxuexizhilu),作者:鸿

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python3.7的进化-异步编程

    asyncio相关模块已经成为Python很核心的一部分,aio-libs一直在持续的发展中,例如aiohttp、aiopg等库已经可以初步的在生产环境使用了。...

    哒呵呵
  • Python的多继承和和Scala的trait

    在业务设计过程中,除了继承这种增量进化,有些时候我们只需要给类添加功能而不是想变成某种类型,那么我们可以选择组合。在这篇文章会先介绍Python的多继承和Sca...

    哒呵呵
  • python类的继承与运算符重载

    Officially, CPython has no rule at all for when exactly overridden method of sub...

    哒呵呵
  • 8.python之面相对象part.3

    在python这门编程语言中,一个类可以去继承一个父类甚至多个父类,只继承一个父类就是单继承,如果一个子类继承了多个父类,那么这就是多继承。原始类被称为“基类”...

    py3study
  • 网络与信息安全领域专赛-WriteUp

    gamectf.com. 600 IN TXT "flag{welcome_TXT}"

    ChaMd5安全团队
  • python获取打开网站的状态码

    PYTHON 获取打开网站的状态码 第一种方式: import requests code=requests.get("http://www.xss.t...

    奶糖味的代言
  • Centos7 安装ELK日志分析

    借鉴:https://www.cnblogs.com/straycats/p/8053937.html

    泽阳
  • Android系统启动——8 附录2:相关守护进程简介

    binder的服务总管,负责binder服务的注册和查找 代码在init.rc 602行

    隔壁老李头
  • 【在线课程笔记】2节课建立一个数字货币交易所

    本课程从数字货币交易所的使用流程入手,深入浅出的讲解交易所中看起来似乎很神秘的功能,交易所怎么赚钱以及数字货币交易所的特别之处。

    辉哥
  • linux awk 数组和循环

    awk 中数组叫做关联数组(associative arrays),下标可以是数字也可以是字符串。awk 中的数组不必提前声明,也不必声明大小,初始化数组元素用...

    阳光岛主

扫码关注云+社区

领取腾讯云代金券