• [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)
    } }

      

  • 相关阅读:
    Git编译安装
    ES集群
    索引、分片以及副本的数量和大小原则:
    初识ELK
    zabbix自定义监控项没权限读取文件问题
    Zabbix的图形界面中文变成□□问题
    logrotate
    rsync
    Linux下的mail指令
    nohup
  • 原文地址:https://www.cnblogs.com/lonelywolfmoutain/p/6736519.html
Copyright © 2020-2023  润新知