layz及访问权限控制

27 阅读1分钟

lazy 关键字用于延迟初始化,即变量在第一次被访问时才会被初始化,而不是在声明时就初始化。

为什么要用 lazy? 解决 初始化顺序问题,例如:

• 父类(或 trait)中需要使用子类的属性,但子类属性还未初始化。

• 避免不必要的计算,只在需要时才创建对象。

import java.io.FileWriter



object phx03 {
trait Filelogger{

  val filename:String
  lazy  val fileWriter=new FileWriter(filename,true)
  def writerlog(msg:String):Unit={
    fileWriter.write(msg)
    fileWriter.close()
  }

}
class MyFilelogger extends Filelogger{
  val filename="11-26.log"
}

  def main(args: Array[String]): Unit = {
    val filelogger=new MyFilelogger()
    filelogger.writerlog("今天上午上scala课程")
  }
}

访问权限控制

1.公开的,不写修饰符

2.protected

保护的

在类的外部不能访问

在子类中访问

3.private.私有的

   在类的外部不能访问

   在子类中不能访问

   在伴生对象中可以访问

4.private[this]

只能在当前对象中使用