大數據技術之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("沒有參數") } }