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]
只能在当前对象中使用