Scala-11.方法

和Java的相同:

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

和Java的不同:

  • 指定方法的访问控制(可见性):

    • 默认是public,和Java相比,Scala提供了更细粒度的作用域控制:
      • 对象私有作用域(Object-private),只有当前对象的实例可见,用private[this]来定义
      • 私有作用域,当前实例和当前类的其他实例可见,用private来定义
      • 保护作用域,子类可见,protected
      • 包作用域,同包类所有成员可见,private[packageName],注意这里可以使不同级别的包
      • 公开作用域,默认就是,加public也行
  • 用super标识父类,来调用父类的方法

    • 如果类继承了多个特质(trait),并且这些特质实现了同样的方法,在使用super的时候,不仅要选择调用的方法,还要选择调用的特质。
  • 用一下方法,给方法的参数指定默认的值:

class Connection {
  def makeConnection(timeout: Int = 5000, protocol: = "http") {
    // doSomething
  }
}

c.makeConnection()
c.makeConnection(3000)
c.makeConnection(1000, "https")
  • 注意参数的复制顺序是从左到右的,如果不设置任何参数会先使用timeout,在设置Protocol的

  • 一般最好在调用方法的时候使用命名参数:

methodName(param1=value1, param2 = value2, ...)
  • 方法返回对象,也可以使用tuples从方法中返回多个值

  • 调用getter/setter方法可以不使用括号

  • 声明方法可能抛出的异常

  • 通过在参数类型后面添加一个*,将参数变为变参,也就是使用不同数量的参数。

    • 用_*适配一个序列
    • 一个方法只能有一个变参
  • 可变参数的使用类似数组

  • 方法用@throws注解来声明可能抛出的异常,可能的多个异常就列出多个@throws

  • 最好吧方法创建为支持链式风格的API

    • 如果类可能被扩展,需要吧this.type作为链式调用风格方法的返回值类型
    • 如果类不会被扩展,需要吧this从链式调用方法中返回出来
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 3,057评论 2 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,539评论 1 32
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,694评论 0 3
  • 6点下班,蹭同事的车,急匆匆赶到驾校练车。 8点结束,走路回宿舍。大街上依然热闹,音乐声,人声,车声等,声...
    YSoul阅读 245评论 0 0
  • 昨天被拉进了一个曾经一起工作的微信群,记忆瞬间被拉到了十几年前。 两天来所有的休息时间基本都贡献在这上面了,曾经的...
    725754dd8349阅读 193评论 0 1

友情链接更多精彩内容