scala07.類

7.1簡單類和無參方法

通過class進行類的定義。
注:在Scala中,類并不聲明為Public,
一個Scala源文件可以包含多個類。所有這些類都具有公有可見性。
調(diào)用無參方法時,可以加(),也可以不加;
如果方法定義中不帶括號,那么調(diào)用時就不能帶括號。

7.2 Getter、Setter 方法

對于scala類中的每一個屬性,編譯后,會有一個私有的字段和相應(yīng)的getter、setter方法生成,
比如:
如果屬性為age,
那么getter方法名叫age,setter方法名為age_=
你也可以重定義getter、setter方法:

注意:
1、如果字段是私有的,則getter和setter 方法也是私有的。
2、如果字段是val,則只有g(shù)etter 方法被生成。
3、如果你不需要任何 getter或setter,可以將字段聲明為private[this].

7.3對象私有字段

private[this]定義對象私有的字段,不生成get、set方法。

7.4Bean屬性

JavaBeans規(guī)范定義了Java的屬性是像getXXX()和setXXX()的方法。許多Java工具都依賴這個命名習(xí)慣。
為了Java的互操作性。將Scala字段加@BeanProperty時,這樣的方法會自動生成。
Person將會生成四個方法:
1、name:String
2、name_=(new Value:String):Unit
3、getName():String
4、setName(new Value:String):Unit

7.5構(gòu)造器

Scala的類構(gòu)造器分為主構(gòu)造器和輔助構(gòu)造器。
1)主構(gòu)造器的參數(shù)直接放置在類名之后:
2)主構(gòu)造器會執(zhí)行類定義中的所有語句:
3)通過private設(shè)置主構(gòu)造器的私有屬性:
4)如果參數(shù)至少被一個方法使用,該參數(shù)將自動升格為字段,否則,該參數(shù)將不被保存為字段:
5)輔助構(gòu)造器名稱為this,通過不同參數(shù)進行區(qū)分,每一個輔助構(gòu)造器都必須以主構(gòu)造器或者已經(jīng)定義的輔助構(gòu)造器的調(diào)用開始:

7.6嵌套類

在Scala中,你幾乎可以在任何語法結(jié)構(gòu)中嵌套任何語法結(jié)構(gòu),在函數(shù)中定義函數(shù),在類中定義類。
Java中的內(nèi)部類從屬于外部類。Scala中每一個實例都有一個內(nèi)部類,內(nèi)部類從屬于實例。

注意:在內(nèi)嵌類中,你可以通過外部類.this的方式來訪問外部類的this引用。還可以對其進行命名訪問。

import org.scalatest.FunSuite

import scala.beans.BeanProperty

// class定義類,和java類似,不用聲明public
//1)主構(gòu)造器的參數(shù)直接放置在類名之后
class Chapter06Test(val name11: String = "", val age11: Int = 1) extends FunSuite {
  var age = 0
  private var value = 0
  //private[this]定義對象私有的字段,不生成get、set方法。
  private[this] var val123 = 0
  //生成與java類似的set/get方法
  @BeanProperty var name: String = _

  def increment(): Unit = {
    value += 1
  }

  def current() = value


  test("core01") {
    //類的定義如上所示
  }
  test("core02") {
    //setter方法
    //    對于scala類中的每一個屬性,編譯后,會有一個私有的字段和相應(yīng)的getter、setter方法生成,
    //    比如:    如果屬性為age,
    //    那么getter方法名叫age,setter方法名為age_=
    val f = new Chapter16Test
    //setter方法
    //    f.age=21
    //getter方法
    //    println(f.age)
  }
  test("core03") {
    //    private[this]定義對象私有的字段,不生成get、set方法。
  }
  test("core04") {

  }
  test("core05") {
    //    1)主構(gòu)造器的參數(shù)直接放置在類名之后
  }
  test("core06") {
    // 在Scala中,你幾乎可以在任何語法結(jié)構(gòu)中嵌套任何語法結(jié)構(gòu)
  }

  //定義在一個類的內(nèi)部稱為嵌套類
  class Member(val name: String) {
    val contacts = Array(1, 2, 3)
  }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 噢,這么一看就全明白了,自古紅顏皆薄……啊呸,自古紅顏皆禍水。哥們這是化身黃繼光,幫娜娜堵了王輝的槍眼唄。 那就趕...
    半點正經(jīng)閱讀 688評論 0 1
  • 我們的人生總是充滿了各種各樣的挑戰(zhàn),我們總會面對一些猝不及防的未來。但是,無論人生如何,也無論生活多難,我們都需要...
    竺冰落閱讀 1,128評論 0 2
  • 王維被世人稱“詩佛”,他詩畫兼長,精通音律、又通佛理。他把畫風(fēng)、樂律、禪理融入詩歌創(chuàng)作中,呈現(xiàn)一種雍容平和、清新自...
    暮曉_薇語閱讀 515評論 0 0
  • 夢中尚在騎竹馬, 眨眼已是白頭翁。 一生鴻業(yè)成流水, 倚杖崖畔悲秋風(fēng)。 長輩親故漸為鬼, 子侄同儕各西東。 夜深步...
    野老說史閱讀 328評論 1 6
  • 關(guān)注自己 眼睛紅了一塊,不痛不癢??寸R子時,又多看了幾眼,心想眼睛為什么紅了一塊。 馬上劈頭蓋臉的冷水澆上來,何必...
    二頭YQT閱讀 216評論 0 0

友情鏈接更多精彩內(nèi)容