Scala学习笔记

2021-01-16  本文已影响0人  leeliang

类-Class

主要记忆点

  1. 会默认给var变量生成get和set方法,比如var age,会默认生成age, age_两个方法
  2. val常量只生成get方法
  3. 若要生成类似Java中的方法,采用@BeanProperty注解到变量上即可
  4. 成员变量如果定义为私有的,则生成的get和set也是私有的
  5. 主构造器:只能有一个,即类名后写上参数。如果没有定义,默认生成一个无参的。
  6. 辅助构造器:名称为this,可以有多个

对象-Object

object在scala中可以实现单例模式,静态方法,静态变量等.scala中没有静态方法或静态字段。object可以实现下面功能

  1. 单例对象
object Accounts{
  private var lastNumber = 0
  def newUniqueNumber() = { 
    lastNumber += 1; 
    lastNumber
  }
}

Accounts的构造器在newUniqueNumber首次调用时执行。不能给对象提供构造器参数。

  1. 伴生对象
    类似java中提供实例方法又提供静态方法的类
class Account {
  val id = Account.newUniqueNumber()
  private var balance = 0.0
  def deposit(amount: Double): Unit = {
    balance += amount
  }
}
object Account { // 伴生对象
  private var lastNumber = 0
  private def newUniqueNumber() = {
    lastNumber += 1
    lastNumber
  }
}

可以看到类和其伴生对象可以互相访问私有特性,但是必须存在于同一个源文件中。

  1. 枚举
    Scala中没有枚举类型。object继承Enumeration可以实现枚举
object TrafficLightColor extends Enumeration {
  val Red, Yellow, Green = Value
  // 其中 val Red = Value(0, "Red")
}

可以看到默认Red的Id为0,name就是Red

scala可以在一定源文件中,定义包结构,但是还是推荐采用类似Java中的方式,即一个源文件都默认在一个包下。

  1. 包对象
    可以给包定义一个包对象
package object demo {
  val defaultName = "demo"
}
package demo {
  class Test {
    var name = defaultName // 从包对象中获取常量
  }
}
上一篇 下一篇

猜你喜欢

热点阅读