小记--------scala---面向对象编程值对象Object
object
在scala中没有静态方法和静态字段,所以在scala中可以用object来实现这些功能,直接用对象名调用的方法都是采用这种实现方式。
第一次调用object的方法时, 就会执行object的constructor,也就是object内部不在method中的代码,如果一个对象从未被使用,那么他的构造器也不会被执行,对象本质上用于类的所有特性。object还可以扩展类以及一个或者多个特质
abstract class ClassName(val parameter) {}
object Test extends ClassName(val parameter){}
但是object不能定义接收参数的constructor
注意:object的constructor只会在其第一次被调用时执行一次, 以后再次调用就不会再次执行constructor了,
object通常用于作为单例模式的实现,或者放class的静态成员。
伴生对象
如果有一个class,还有一个与class同名的object,那么就称这个object是class的伴生对象, class是object的伴生类
伴生类和伴生对象必须存放在一个.scala文件之中
伴生类和伴生对象,最大的特点就在于,相互可以访问private field(私有属性)
object继承抽象类
成功覆盖抽象类的抽象方法
apply方法
object中非常重要的一个特殊方法,就是apply方法。
通常在伴生对象中实现apply方法,并在其中实现构造伴生类的对象的功能。
而创建伴生类对象时, 通常不会使用new Class的方法,而是使用Class()的方式,隐式地调用伴生对象的apply方法,这样会让对象创建更加简洁
main 方法
在scala中,如果要运行一个应用程序,那么必须有一个main方法,作为入口
scala中的main方法必须定义在object中
object HelloWorld{ def main (args:Array[String]){ println("helloWord") } }
先用scalac 编译, 在用scala执行
scalac HelloWorld.scala
scala HelloWorld
object实现枚举功能
需要用object集成Enumeration类,并且调用Value方法来初始化枚举值
其中Value(0,"spring")的含义。
分别为Value(id , name)
可以使用增强for循环遍历枚举的值
作者:于二黑
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。