Scala读书笔记之 Chapter 5、6、7(类,对象,包)

来源:互联网 发布:狼群算法源代码 编辑:程序博客网 时间:2024/06/18 09:57

第五章 类

要点

  • 类的字段中自动带有getter方法和setter方法
  • 可以用定制的getter/setter方法替换掉字段的定义,而不必修改使用类的客户端(统一访问原则)
  • 用@BeanProperty注解来生成JavaBeans的getXxx/setXxx方法
  • 每个类都有一个主要的构造器,这个构造器和类定义“交织”在一起。它的参数直接成为类的字段,主构造器执行类体中所有的语句
  • 辅助构造器是可选的,它们叫做this
  • Scala中,几乎可以在任何语法结构中内嵌任何语法结构,可以在函数中定义函数,在类中定义类
    chatter.Member和myFace.Member是两个不同的类,解决方法可以是半生对象或者类型投影(Network#Member)

第六章 对象

要点

  • 用对象作为单例或存放工具方法,对象的构造器在该对象第一次被使用时调用,类似Java或C++中使用单例对象的情况,Scala可以用对象实现
    • 作为存放工具函数和常量的地方
    • 高效地共享单个不可变实例
    • 需要用单个实例来协调某个服务时(参考单例模式)
  • 类可以拥有一个同名的伴生对象

    class Account {val id = Account.newUniqueNumber()private var balance = 0.0def deposit(amount: Double) { balance += amount }...}    object Account { //伴生对象private var lastNumber = 0private def newUniqueNumber() = { lastNumber += 1; lastNumber }}//类和它的伴生对象可以互相访问私有特性。它们必须存在于一个源文件中
  • 对象可以据扩展类或特质
  • 对象的apply方法通常用来构造伴生类的新实例
  • 如果不想显式定义main方法,可以用扩展App特质的对象
  • 可以通过扩展Enumeration对象来实现枚举

第七章 包和引入

要点

  • 包也可以像内部类那样嵌套
  • 包路径不是绝对路径
  • 包声明链x.y.z并不自动将中间包x和x.y变成可见
  • 位于文件顶部不带花括号的包声明在整个文件范围内有效
  • 保对象可以持有函数和变量
  • 引入语句可以引入包、类和对象
  • 引入语句可以出现在任何位置
  • 引入语句可以重命名和隐藏特定成员
  • java.lang、scala和Predef总是被引入
0 0