大数据技术之Scala
======第一篇:Scala编程语言=====
Scala语言的面向对象(四)Scala中的Object对象
Scala没有静态的修饰符,但Object对象下的成员都是静态的 ,若有同名的class,这其作为它的伴生类(伴生对象)。
在Object中一般可以为伴生类做一些初始化等操作。
注意:main方法一定写在object中,但是不一定必须写在伴生对象中。
下面是Java中的静态块的例子。在这个例子中,我们对JDBC进行了初始化。
而Scala中的Object就相当于Java中静态块。
Object对象的应用
1.单例对象-object
单例模式-一个类只有一个对象
java中实现模式:把类的构造器定义成private的,提供getInstance方法,返回对象。
scala中实现模式:用object对象实现。
Scala代码实现:
package mianxiangduixiang.lei /** * object对象 * 实现单例模式 * 信用卡 */ object ObjectDanLiCreditCard { //实现单例模式 //定义一个变量保存信用卡卡号 //private [this]代表不会自动生成get set方法
private [this]var creditCardNumber:Long=0
//定义一个函数来产生卡号
def generateCCNumber():Long={ creditCardNumber+=1 creditCardNumber } //测试程序
def main(args: Array[String]): Unit = { println(ObjectDanLiCreditCard.generateCCNumber()) println(ObjectDanLiCreditCard.generateCCNumber()) println(ObjectDanLiCreditCard.generateCCNumber()) println(ObjectDanLiCreditCard.generateCCNumber()) println(ObjectDanLiCreditCard.generateCCNumber()) println(ObjectDanLiCreditCard.generateCCNumber()) println(ObjectDanLiCreditCard.generateCCNumber()) } }
2.使用应用程序对象:可以省略main方法;需要从父类App继承。
使用APP对象-应用程序对象,好处:可以省略main方法
Scala代码实现:
package mianxiangduixiang.lei /** * object对象 * 应用程序对象-使用APP对象 * HelloWord */ object ObjectAppDuiXiangHelloWord extends App { //继承App后不用再写main()了,直接写main()里面的程序即可
println("Hello Word") //对于原来main()里的args参数,直接使用即可
if(args.length>0) { println("有参数") }else{ println("没有参数") } }