Scala 中類的認知

===================================================
scala裏面的類:
1、屬性默認是public的;
2、設置私有,加上private;
3、函數中傳入的參數是val類型的;


Scala比Java更面向對象的一個方面是Scala沒有靜態成員。替代品是,Scala有單例對象:singleton object
單例對象的類型是由單例對象的伴生類定義的。然而,單例對象擴展了超類並可以混入特質。由於每個單例對象都是超類的實例並混入了特質,你可以通過這些類型調用它的方法,用這些類型的變量指代它,並把它傳遞給需要這些類型的方法。


==================================================


單例對象的使用就是採用伴生類來實現的, 就是同一個類中即有class,也有object
就像這樣
class SwitchTryCatch {


  def useSwitch(): Unit ={
    val inpara = "a"
    inpara match {
      case "a" => println(" just match please quit")
      case "b" => print("just ok")
      case "c" => "c"
    }
  }


  def useTryCatch(): String ={
    val a = 10
    val b = 11
    if(a>b) {
      throw new RuntimeException("you are wrong")
    }else {
      b+""    // this as a return
    }
  }
}


object SwitcchTryCatchTest extends Application{
  var stc = new SwitchTryCatch
  var rest = stc.useTryCatch()
  print(rest)
}


==========================================================
Application特質
//繼承自application之後, 可以直接在{}之間運行代碼。
import ChecksumAccumulator.calculate 
object FallWinterSpringSummer extends Application 

for (season <- List("fall", "winter", "spring")) 
println(season +": "+ calculate(season)) 



繼承自Application比寫個顯式的main方法要短,不過它也有些缺點。首先,如果想訪問命令行參數的話就不能用它,因爲args數組不可訪問。比如,因爲Summer程序使用了命令行參數,所以它必須帶有顯式的main方法,如代碼4.3所示。第二,因爲某些JVM線程模型裏的侷限,如果你的程序是多線程的就需要顯式的main方法。最後,某些JVM的實現沒有優化被Application特質執行的對象的初始化代碼。因此只有當你的程序相對簡單和單線程情況下你纔可以繼承Application特質。 








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章