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

object Accounts{
private var lastNumber =
def newUniqueNumber()={lastNumber+=;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{

    

}

05-11 22:18
查看更多