Scala學習第九天 Scala的內部類實戰詳解
阿新 • • 發佈:2018-12-26
資訊來源於 DT大資料夢工廠微信公眾賬號:DT_Spark
DT大資料夢工廠群號:302306504王家林老師微訊號:wangjialinandroid
1、Scala內部類
與Java的內部類有很大不同,Java的內部類其實是從屬於外部類,而Scala的內部類是從屬於物件的。這可以從下面的例項看出:
class Outer(val name : String) { outer=>
class Inner(val name : String){
//foo方法傳遞的是Inner型別的引數
def foo(b : Inner) = println(" Outer: " + outer.name
+ " Innner: " + b.name)
}
}
object OOPInScala{
def main(args: Array[String]){
//構建2個外部類,以"Spark"、"Hadoop"引數傳入;
val outer1=new Outer("Spark")
val outer2=new Outer("Hadoop")
val inner1=new outer1.Inner("Scala")
val inner2=new outer2.Inner("Java" )
inner1.foo(inner1)
inner2.foo(inner2)
}
}
/*Val的name是外部類outer的成員,在外部類又定義了一個內部類Inner,同樣,Val的name是內部類Inner的成員*/
/*當內部類要訪問外部類的話,這個時候,可以給外部類指定一個名稱,
如上圖的outer*/
內部類,Scala與Java的不同:
1)構建內部類的語法是new outer1.Inner(“Scala”),因為內部類是從屬於外部類的物件,而在Java中,是outer.new Inner(“Scala”).
為什麼Scala這麼設計呢?舉個簡單的場景,比如network中,每個network有自己的成員,不同的社交網路比如”twwiter”,”facebook”,顯然,當我們要訪問facebook的成員,用new facebook的例項去訪問內部的成員更自然。
Scala 深入淺出實戰經典(1-64講)完整視訊、PPT、程式碼下載: