前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python和Scala的类和对象(二)

Python和Scala的类和对象(二)

作者头像
哒呵呵
发布2018-08-06 14:15:14
3530
发布2018-08-06 14:15:14
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

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

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

代码语言:javascript
复制
class NewBook(conts: String) extends Book {
    def openBooks: String = conts
  }

Python

代码语言:javascript
复制
class NewBook(Books):

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

    def open_books(self):
        return self.conts

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

代码语言:javascript
复制
class A {
    def a:String = "a"
  }

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

Python

代码语言:javascript
复制
class A:

    def a(self):
        return 'a'

class B(A):

    def a(self):
        return 'b'
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档