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从链式调用方法中返回出来

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LintCode-49. 字符大小写排序

    悠扬前奏
  • LeetCode-195. 第十行

    悠扬前奏
  • MySql规范

    where 1. 条件比较 <=> 可以判断null值,=是不可以判断null值 < > >= <= != <=>

    悠扬前奏
  • excel中的超链接函数

    今天跟大家分享在excel中超链接函数的用法! ▼ 其实excel中想要达到超链接效果有很多种方法:直接手工设置、超链接函数、开发工具、VBA等都可以实现。但是...

    数据小磨坊
  • 云开发如何为腾讯游戏年度发布会保驾护航?

    ? 受疫情影响,2020 腾讯游戏年度发布会以线上的形式进行。区别于往年的线下 toB模式,线上面对的群体比较广泛,同时也希望借此机会能更贴近玩家,所以在线上...

    腾讯云开发TCB
  • log

    干申大那多
  • 如何用 Decorator 装饰你的 Typescript?

    正在着手写 THE LAST TIME 系列的 Typescript 篇,而Decorator 一直是我个人看来一个非常不错的切面方案。所谓的切面方案就是我们常...

    Nealyang
  • Java中 Treemap和 Treeset的使用

    首先要注意的是,本文章不涉及到红黑树的具体实现,也就是说不会逐行分析TreeMap和TreeSet的源码实现,因为红黑树看了也会忘的…

    呼延十
  • 论文扫读-隐私保护+机器学习系列03

    找了篇国产论文,最近在关注的研究方向是privacy preserving machine learning 简称PPML

    安包
  • 浅谈12306 核心模型设计思路和架构设计

    原文出处: 汤雪华 前言 春节期间,无意中看到一篇文章, 文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后来自己想想,也确实如此。所以,很...

    wangxl

扫码关注云+社区

领取腾讯云代金券