zoukankan      html  css  js  c++  java
  • Scala学习笔记(6)对象

    1.单例对象。Scala没有静态方法或字段,可以使用object这个语法结构来达到同样的目的。对象定义了单个实例,包含了你想要的特性。

    object Accounts{
      private var lastNumber = 0  
      def newUniqueNumber()={lastNumber+=1;lastNumber}  
    }

    Scala没有静态的概念,如果需要定义静态成员,可以通过object来实现

    编译完成后,会生成对应的类,方法都是静态方法,非静态成员对应到单例类中去。

    单例类以Util&来作为类名称

    scala>object Util{

      ///单例类中

      private var  brand ="benz";

      //静态方法

      def hello() = println("hello world");

    }

    2.伴生对象

    -----------------------------------

      class Car{

        def stop()=println("stop....")

      }

      object Car{

        def run()=println("run.......")

      }

      类名和object名称相同,而且必须在一个scala文件中进行定义

    3.扩展类或特质的对象

    --------------------------------------------

      (1)trait:特质,等价于java中的接口

      (2)object等价于java 中的静态

      (3)抽象类

        //这个方法实现创建抽象类

    abstract class Dog{
            def a():Unit
    }

    //创建对象

    object Jing8 extends Dog{
            override def a():Unit=(println("helloworld"))
    }

    4.apply方法

    -----------------------------------

      我们通常会定义和使用对象的apply()方法。当遇到以下的形式的时候,apply()方法就会调用。

      Object(参数1,....,参数N)  //通常这样的一个方法返回的是伴生对象。

      举例来说,Array对象定义了apply方法,让我们可以用下面的这种方法来创建数组。

      Array("Mary","had","a","little","lamb")  //Array定义了apply方法

      Array(Array(1,7),Array(2,9))      //对于嵌套语言而言,省去new 关键字会方便很多

    注意:Array(100)和new Array(100)很容易混淆。前一个表达式调用的是apply(100),输出一个单元素(整数100)的Array[Int];

        第二个表达式调用的是构造器this(100),结果是Array[Nothing],包含了100个Null元素

      通过如下的方式定义apply()方法

    object Util{
      def apply(s:String)=print(s)  
    }
    //调用Util.apply()方法
    //Util("hello world")<====>Util.apply("hello world")

      

    scalac编译scala文件,产生class文件

    -----------------------------------------------------------

      cmd>scalac xxx.scala

    运行class程序

    ------------------------------------------------------------------

      cmd>scala Person2.scala  

    一步到位

    -------------------------------------

      cmd>scala Person.scala

    trait(特质)

    ----------------------------------------

      trait HelloService{

        

    }

  • 相关阅读:
    jquery获取元素各种宽高及页面宽高
    Mysql 多表联合查询效率分析及优化
    mysql连表操作是先连表还是先查询条件
    CSS实现垂直居中
    laravel中orderBy使用
    Spring官网改版后下载
    java.lang.NoClassDefFoundError: org/jaxen/JaxenException
    flex 简单跑马灯效果(竖着显示)
    Flex “跑马灯”效果(自定义“跑马灯”控件)
    当LinkButton无效时,光标不显示为手型
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9654928.html
Copyright © 2011-2022 走看看