scala class的三個分類

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{}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章