前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scala-11.方法

Scala-11.方法

作者头像
悠扬前奏
发布2019-07-15 15:36:41
3570
发布2019-07-15 15:36:41
举报

和Java的相同:

  • 都是定义在类上的行为。

和Java的不同:

  • 指定方法的访问控制(可见性):
    • 默认是public,和Java相比,Scala提供了更细粒度的作用域控制:
      • 对象私有作用域(Object-private),只有当前对象的实例可见,用private[this]来定义
      • 私有作用域,当前实例和当前类的其他实例可见,用private来定义
      • 保护作用域,子类可见,protected
      • 包作用域,同包类所有成员可见,private[packageName],注意这里可以使不同级别的包
      • 公开作用域,默认就是,加public也行
  • 用super标识父类,来调用父类的方法
    • 如果类继承了多个特质(trait),并且这些特质实现了同样的方法,在使用super的时候,不仅要选择调用的方法,还要选择调用的特质。
  • 用一下方法,给方法的参数指定默认的值:
代码语言:javascript
复制
class Connection {
  def makeConnection(timeout: Int = 5000, protocol: = "http") {
    // doSomething
  }
}

c.makeConnection()
c.makeConnection(3000)
c.makeConnection(1000, "https")
  • 注意参数的复制顺序是从左到右的,如果不设置任何参数会先使用timeout,在设置Protocol的
  • 一般最好在调用方法的时候使用命名参数:
代码语言:javascript
复制
methodName(param1=value1, param2 = value2, ...)
  • 方法返回对象,也可以使用tuples从方法中返回多个值
  • 调用getter/setter方法可以不使用括号
  • 声明方法可能抛出的异常
  • 通过在参数类型后面添加一个*,将参数变为变参,也就是使用不同数量的参数。
    • 用_*适配一个序列
    • 一个方法只能有一个变参
  • 可变参数的使用类似数组
  • 方法用@throws注解来声明可能抛出的异常,可能的多个异常就列出多个@throws
  • 最好吧方法创建为支持链式风格的API
    • 如果类可能被扩展,需要吧this.type作为链式调用风格方法的返回值类型
    • 如果类不会被扩展,需要吧this从链式调用方法中返回出来
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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