scala新手入~~~~
class
1.類名可以和對象名爲同一個名字,該對象稱爲該類的伴生對象;
2.類和伴生對象可以相互訪問他們的私有屬性,但是他們必須在同一個源文件內;
3.類只會被編譯,不能直接被執行;
4.類的申明和主構造器在一起被申明,在一個類中,主構造器只有一個;
5.必須在內部申明主構造器或者是其他申明主構造器的輔構造器,主構造器會執行類定義中的所有語句。
6.scala對每個字段都會提供getter和setter方法,同時也可以顯示的申明;
7.針對val類型,只提供getter方法;
8.默認情況下,字段爲公有類型,可以在setter方法中增加限制條件來限定變量的變化範圍;
9.在scala中方法可以訪問該類所有對象的私有字段。
object
1.scala中沒有靜態方法和靜態字段,可以用object來實現這些功能,直接用對象名調用的方法都是採用這種實現方式,例如Array.toString;
2.對象的構造器在第一次使用的時候會被調用,如果一個對象從未被使用,那麼他的構造器也不會被執行;
3.對象本質上擁有類(scala中)的所有特性,除此之外,object還可以擴展類以及一個或者多個特質:例如,
abstract class ClassName(val parameter){}
object Test extends ClassName(val parameter){}
4.object不能提供構造器參數,也就是說object必須是無參的
trait
1.Scala中可以通過特徵(trait)實現多重繼承,不過與java不同的是,它可以定義自己的屬性和實現方法體;
2.沒有自己的實現方法體時可以認爲它同java interface是等價的;
3.Scala中也是一般只能繼承一個父類,可以通過多個with進行多重繼承。
trait TraitA{}
trait TraitB{}
trait TraitC{}
object Test1 extends TraitA with TraitB with TraitC{}