zoukankan      html  css  js  c++  java
  • scala对象

    1.单例对象

    /*
    scala中没有静态方法 静态字段 使用object达到同样的目的
    
    首次使用时构造器会被执行
    未被使用时不会被执行
     */
    object MyCounter {
    
      private var lastNumber = 0
    
      def newUniqueNumber() = {
        lastNumber += 1
        lastNumber
      }
    
    }

    2.伴生对象

    /*
    伴生对象 伴生类
    1.名称相同
    2.类和他的伴生对象可以相互访问私有特性
    3.必须在同一个源文件中
     */
    
    class MyCounter {
      val id = MyCounter.newUniqueNumber()
      private var balance = 0.0
    
    }
    
    object MyCounter {
    
      private var lastNumber = 0
    
      def newUniqueNumber() = {
        lastNumber += 1
        lastNumber
      }
    
    }

    3.扩展类或特质的对象

    //一个object可以扩展类以及一个或者多个特质
    //其结果是扩展了指定类以及特质的类的对象
    //同时拥有在对象定义中给出的所有特性
    abstract  class UndoableAction(val description:String){
      def undo():Unit
      def redo():Unit
    }
    
    object DoNothingAction extends UndoableAction("Do nothing"){
      override def undo(): Unit = ???
    
      override def redo(): Unit = ???
    }

    4.apply方法

    class Person private(id: Int, age: Int) {
    
    }
    
    object Person {
      def apply(id: Int, age: Int) = {
        new Person(id, age)
      }
    
      def main(args: Array[String]): Unit = {
        val p1 = Person(1, 2)
      }
    }

    5.应用程序对象

    1.main方法
    2.继承App
    class Person private(id: Int, age: Int) {
    
    }
    
    object Person extends App {
      val p1 = Person(1, 2)
    }

    6.枚举

    /*
    scala没有枚举类型
    助手类:Enumeration
    定义扩展Enumeration类的对象,并以Value方法调用初始化枚举中的所有可选值
     */
    
    object TrafficLightColor extends Enumeration {
      val Red, Yellow, Green = Value
    
      def main(args: Array[String]): Unit = {
        val a: TrafficLightColor.Value = TrafficLightColor.Green //引用枚举值  类型:TrafficLightColor.Value
      }
    }
  • 相关阅读:
    rsyslog服务日志收集配置
    Python urllib2 发送HTTP Request
    Jenkins版本回滚
    C++算法的40个高频面试问题集锦
    Linux添加自启动daemon service
    python爬虫随机设备信息生成模板
    selenium配置有账号密码验证的代理
    app脱壳后多个dex合并成一个
    webpack优化系列-多进程打包thread-loader
    AtCoder abc158_f
  • 原文地址:https://www.cnblogs.com/yin-fei/p/10830701.html
Copyright © 2011-2022 走看看