• 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{

        

    }

  • 相关阅读:
    安装 Visual Studio 出现网络问题,无法连接
    开机时如何默认关闭小键盘
    nginx 443端口配置
    nginx启动提示 nginx: [emerg] the INET6 sockets are not supported on this platfor
    ffmpeg 常用命令
    linux下安装python3.7.2
    Win10的Hyper-V虚拟机上安装Ubuntu后显示分辨率问题
    Hyper-V安装CentOS修改分辨率
    Linux 设置简单密码
    nginx 80端口跳转到443
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9654928.html
Copyright © 2020-2023  润新知