zoukankan      html  css  js  c++  java
  • [scala] scala 对象(六)

    1、单例对象和伴生对象

    2、定义单利对象的apply方法可不通过构造器直接创建对象

    3、extends 来扩展单例对象

    4、枚举实现

    /**
      *  单例对象
     *
      * @author xuejz
      * @date 2017-04-13 16:41
      * @since 1.8
      */
    
    //单例对象
    class Parent extends Action(12){
      //调用伴生对象的无参方法
       val pson =if(Parent.son==0) 1 else Parent.newSon
    
       val son=0
    
    }
    //伴生对象
    object Parent{
      private var son:Int=0
      private def newSon():Int={son+=1;son}
    
       //定义apply方法
       def apply(id:Int)={
         new Parent
      }
    }
    
    /**
      * @author xuejz
      * @date 2017-04-13 16:55
      * @since 1.8
      */
    class Action(val defineId:Int){
    
       private val init:Int=defineId
       var createTime = new Date()
    
       def id=init
       def id_=(newId:Int):Unit=this.id=id
    }  

    枚举

    /**
      *  枚举类 
      *  继承Enumeration
      * @author xwolf
      * @date 2017-04-19 23:17
      * @since 1.8
      */
    object Colors extends Enumeration{
      val red,yellow,green,black=Value
      val yarn=Value("yarn")
    
    }
    

      

     

     测试:

    object ParentTest {
    
      def main(args: Array[String]): Unit = {
        val parent = new Parent
         println(parent.pson)
         println(parent.id)
        println(parent.createTime)
    
        //定义apply 方法
        val p =Parent(43)
        println(p.id)

    //枚举调用
    println(Colors.red)
    println(Colors.withName("black"))
    println(Colors.yarn)
    } }

      

  • 相关阅读:
    IsEmpty函数和IsNull函数之间的区别
    JavaScript的self和this使用小结
    PHP中读写文件实现代码
    ExtJs的数据代理proxy
    php递归列出所有文件和目录的代码
    解析Extjs与php数据交互(增删查改)
    MySql 批量创建、导入实例
    MySQL 进入 导入
    小知识:批量导入数据
    js 扩展实例
  • 原文地址:https://www.cnblogs.com/lonelywolfmoutain/p/6736519.html
Copyright © 2011-2022 走看看