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特質。
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特質。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.