七、scala面向對象編程之類

一、  定義一個簡單的類java

二、getter與setter函數

三、自定義getter與setter方法this

四、僅暴露field的getter方法spa

五、private[this]的使用scala

六、Java風格的getter和setter方法3d

七、輔助constructor對象

八、主constructorblog

九、內部類get

一、  定義一個簡單的類

  定義類和建立類的對象,並調用其方法it

  

二、getter與setter

  定義不帶private的var field,scala自動生成getter和setter方法。

  使用private修飾,則生成的getter和setter也是private的。

  定義val field 則只會生成getter方法。

  不但願生成setter和getter方法,則將field聲明爲private[this]。

  調用getter和setter方法,分別叫作name和name_=。

   

三、自定義getter與setter方法

  若是但願可以本身對getter和setter方法進行控制,則能夠自定義getter和setter方法,自定義setter方法的時候必定要注意scala的語法限制,簽名、=、參數之間不能有空格。

  

四、僅暴露field的getter方法

  若是但願可以僅僅暴露一個getter方法,而且還能經過某些方法更改field的值,那麼須要綜合使用private以及自定義getter方法。此時field是private的,對外界沒有暴露,本身能夠實現修改field值的方法,能夠覆蓋getter方法。

  

五、private[this]的使用

  在類的方法中,可直接訪問類的其餘對象的private field,有些狀況下,不但願field被其餘對象訪問到,那麼可使用private[this],意味着對象私有的field,只有本對象內能夠訪問到。

  

  

六、Java風格的getter和setter方法

  Scala的getter和setter方法的命名與java是不一樣的,是field和field_=的方式。若是要讓scala自動生成java風格的getter和setter方法,只要給field添加@BeanProperty註解便可。此時會生成4個方法,name:String、name_=(newValue:String):Unit、getName():String、setName(newValue:String):Unit。

  

  

七、輔助constructor

  Scala中,能夠給類定義多個輔助constructor,相似於java的構造函數重載。輔助constructor之間能夠相互調用,並且必須第一行調用主constructor。

  

八、主constructor

  Scala中,主constructor是與類名放在一塊兒的,與java不一樣。在類中,沒有定義在任何方法或者代碼塊之中的代碼,就是主constructor的代碼,這點沒java那麼清晰。

  

  主contructor中還能夠經過使用默認參數,給參數設置默認的值。

  

  若是主constructor傳入的參數什麼修飾都沒有,好比name:String,那麼類內部的方法是用到了,則會聲明爲private[this] name;不然沒有該field,就只能被constructor代碼使用而已。

   

九、內部類

  Scala中,能夠在類中定義內部類,與java不一樣,每一個外部類的對象的內部類,都是不一樣的類。

   

相關文章
相關標籤/搜索