?
包
- 包聲明:和Java類似,作用是區分同名類、管理類命名空間。Scala包名只能含數字、字母等,不能數字開頭、不能用關鍵字。
- 包說明:有類似Java的包管理風格,也有獨特嵌套風格。嵌套風格有兩個特點,一是,一個源文件中可以聲明多個 package;二是,? 子包中的類可以直接訪問父包中的內容,而無需導包。
- 包對象:為包定義同名對象,其成員可作為包成員共享訪問。若用Java包管理風格,包對象定義在對應?package.scala?文件且名稱與包一致;嵌套風格下,包對象可與包定義在同一文件,但需在同一作用域 。
- 導包說明:
1)和Java類似,用?import?導入類。、
2)局部導入:什么時候使用,什么時候導入。在其作用范圍內都可以使用
3)通配符導入:import java.util._
4)給類起名:import java.util.{ArrayList=>JL}
5)導入相同包的多個類:import java.util.{HashSet, ArrayList}
6)屏蔽類:import java.util.{ArrayList =>_,_}
7)導入包的絕對路徑:new _root_.java.util.HashMap????????????????????????????????????????????????????????????????????????????????
注:Scala 中的三個默認導入分別是
import java.lang._
import scala._
import scala.Predef._
?
示例:
- 類的定義:和Java類似,定義語法為?class 類名 { }? ,Scala中類默認具有公有可見性,一個源文件可包含多個類? 。
- 屬性:是類的組成部分。定義語法如?[修飾符] val/var 屬性名稱 : [類型] = 屬性值? ,?val?修飾的屬性不可重新賦值(類似Java的?final? ),?var?修飾的可重新賦值 。
- 訪問權限:在 Java 中,訪問權限分為:public,private,protected 和默認。在 Scala 中,你可以通過類似的修飾符達到同樣的效果。但是使用上有區別。
1)? Scala 中屬性和方法的默認訪問權限為 public,但 Scala 中無 public 關鍵字。
2)? private 為私有權限,只在類的內部和伴生對象中可用。
3)? protected 為受保護權限,Scala 中受保護權限比 Java 中更嚴格,同類、子類可以訪問,同包無法訪問。
?
4)? private[包名]增加包訪問權限,包名下的其他類也可以使用
- 方法:定義語法為?def 方法名(參數列表) : 返回值類型 = { 方法體 }?。
- 創建對象:分為不可變對象(用?val?定義 )和可變對象(用?var?定義 )。
1)? val 修飾對象,不能改變對象的引用(即:內存地址),可以改變對象屬性的值。
2)? var 修飾對象,可以修改對象的引用和修改對象的屬性值。
3)? 自動推導變量類型不能多態,所以多態需要顯示聲明。
- 構造器:主構造器直接在類名后定義參數及邏輯,輔助構造器用?def this(參數列表)? 定義,且輔助構造器第一行需調用主構造器或其他輔助構造器 。主構造器參數分為可修改(?var?修飾 )、不可修改(?val?修飾 )、只用于初始化(無修飾 )三種類型。
- 繼承:子類繼承父類用?extends?關鍵字,子類可重寫父類方法,重寫時需用?override?關鍵字 。Scala中方法重寫規則和Java類似,但語法略有不同。
- 動態綁定:Scala 中屬性和方法都是動態綁定,而Java 中只有方法為動態綁定
?