快学Scala4-对象

作者: Codlife | 来源:发表于2016-08-07 22:26 被阅读0次

    参考文献:《快学Scala》第五章

    一:类-伴生对象

    • 在 java 中,你通常会即用到实例方法又用到静态方法的类。
    • 在Scala 中,你可以通过类和与类同名的”伴生“对象来达到相同的目的。
    • 类和它的伴生对象可以相互访问私有的特性。
    • 他们必须在同一个源文件中。
    object TestObject {
      private var lastNumber=0
      private def newUniqueNumber()={
        lastNumber+=1
        lastNumber
      }
    }
    class TestObject{
      val id=TestObject.newUniqueNumber()
      private var balance= 0.0
      def deposit(amount:Double){balance += amount}
    }
    

    二:扩展类 或 trait 的对象

    一个object 可以扩展类以及一个或多个trait
    针对下面的类:
    val actions= Map("open" -> DoNothingAction,"save" -> DoNothingAction)*/

    abstract class UndoableAction(val desc:String){
      def undo():Unit
      def redo():Unit
    }
    object DoNothingAction extends UndoableAction("do nothing"){
      override def undo(){}
      override def redo(){}
    }
    

    三:apply 方法

    注意 Array(100) 和new Array(100)的区别
    前者:应用了apply 方法,产生一个元素
    后者定义了100个值为null 的元素
    自定义apply 实例:

    val acct=Account(100) //使用apply
    val acct=new Account(100) //使用 构造方法*/
    class Account private(val value:Double){
      private var v=value
    }
    object Account{
      def apply(value:Double): Unit ={
        new Account(value)
      }
    }
    

    Tips:学习大数据技术Spark ,Scala 的重要性不言而喻,希望筒子们好好学习Scala!

    相关文章

      网友评论

        本文标题:快学Scala4-对象

        本文链接:https://www.haomeiwen.com/subject/gailsttx.html