第六章 函数式对象

  • 创建类

  • 类的声明中就会带有主构造器

  • 不可变对象

  • 优点

  • 没有会随着时间变化的复杂的状态空间

  • 可以传递不可变对象
  • 没有线程可以改变不可变对象的状态
  • 使哈希表更安全

  • 缺点

  • 有时需要赋值很大的对象表

  • 重写方法

  • 需要关键字 override def

  • 检查先决条件

  • 使用require方法

  • 添加字段

  • 类中定义的参数,使用时,必须要让该参数初始化字段,使用字段达到相应效果

  • 添加字段后,可以在外部访问字段

  • 自指向

  • 关键字 this 指向当前执行方法被调用的对象实例,若在构造器中,就是正被构建的对象实例

  • 辅助构造器

  • 主构造器之外的构造器称为辅助构造器

  • 辅助构造器的定义开始于 def this(…)
  • 每个辅助构造器的第一个动作都是调用同类的别的构造器
  • 被调用的构造器可以是主构造器也可以是源文件中早于调用构造器定义的其他辅助构造器

  • 私有字段和方法

  • 私有字段只能在类的主体之内被访问,外部不可见

  • 关键字 private 定义的字段和方法都是外部不可见的

  • 定义操作符

  • 操作符也是函数的一种,可以自己按需求定义

  • Scala的标识符

  • 字母数字标识符:以字母或下划线开始,之后可以跟字母、数字或下划线

  • 操作符标识符:由一个或多个操作符字符组成,如 +, :, ?, ~, #等
  • 混合标识符:由字母数字组成,后面跟着下划线和一个操作符标识符,如unary_+
  • 字面量标识符:用反引号 ‘…’ 包括的任意字符串

  • 方法重载

  • 隐式转换

  • 隐式转化将库变得更灵活、更方便

  • 用关键字 implicit 定义转换方法
  • 要隐式转换起作用就必须定义在作用范围之内

  • 告诫

  • Scala允许使用者用操作符名称来创建方法并定义隐式转换,便于设计出更简洁和更易理解的库

  • 有了大量的设计这种易于使用库的能力, 相应的责任也愈发的大了
  • 操作符方法通常会使客户代码更简洁,但它只会在客户程序员能够识别和记住每个操作符的意思的程度上使程序更易读
文章导航