頂級類:Anyhtml
Any的子類:AnyRef、AnyValjava
AnyRef的子類:Nullapi
AnyVal的子類:java的值類型Byte | Short Int Long | Float Double | Char String | Boolean | Unitscala
Null能夠賦值給全部的引用類型(AnyRef),不能賦值給值類型,這個java的語義是相同的,null是是是Null的惟一對象。htm
Unit:AnyVal的子類,無值,和其餘語言的void相似,用於無返回值對象
Any AnyRef(Null null Nothing) AnyVal(Unit)繼承
抽象 非抽象 抽象 抽象 抽象get
Optionit
Option抽象類,繼承兩個特徵extends Product with Serializableio
Option的子類:Some、 None:Option[Nothing]
scala推薦在可能返回空的方法使用Option[X]做爲返回類型。若是有值就返回Some[x](Some也是Option的子類),不然返回None
得到Option後,能夠使用get得到包含的值,或者使用getOrElse得到默認值若是isEmpty爲true。
Noting:
Nothing是全部Any的抽象子類,也是Null的子類。Nothing沒有對象,可是能夠用來定義類型。例如,若是一個方法拋出異常,則異常的返回值類型就是Nothing(雖然不會返回)
if語句是表達式,有返回值,必然有返回值類型,若是x < 0,拋出異常,返回值的類型爲Nothing,Nothing也是Int的子類,因此,if表達式的返回類型爲Int,get方法的返回值類型也爲Int。
Nil:
Nil是一個空的List,定義爲List[Nothing],根據List的定義List[+A],全部Nil是全部List[T]的子類。
Noting用法:
Nil:List[Nothing]
throw new Exception(...) 爲Nothing