教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

Scala重寫(xiě)父類(lèi)有哪些注意事項(xiàng)?重寫(xiě)代碼演示

更新時(shí)間:2020年12月30日14時(shí)55分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  
      Scala和Java類(lèi)似,只允許繼承一個(gè)父類(lèi)。不同的是,Java只能繼承父類(lèi)中非私有的屬性和方法。而Scala可以繼承父類(lèi)中的所有屬性和方法,子類(lèi)擁有父類(lèi)的所有特征。

  但是Scala在子類(lèi)繼承父類(lèi)的時(shí)候,有以下幾點(diǎn)需要注意:

  如果子類(lèi)要重寫(xiě)一個(gè)父類(lèi)中的非抽象方法,則必須使用override關(guān)鍵字,否則會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。

  如果子類(lèi)要重寫(xiě)父類(lèi)中的抽象方法時(shí),則不需要使用override關(guān)鍵字。

  下面,創(chuàng)建一個(gè)Point類(lèi)和一個(gè)Location類(lèi),并且Location類(lèi)繼承Point類(lèi),演示子類(lèi)Location重寫(xiě)父類(lèi)Point中的字段,具體代碼如文件1所示。

   文件1 ExtendsTest.scala

  class Point(val xc: Int, val yc: Int) {

     var x: Int = xc

     var y: Int = yc

     def move(dx: Int, dy: Int) {

       x = x + dx

       y = y + dy

       println ("x 的坐標(biāo)點(diǎn) : " + x);

       println ("y 的坐標(biāo)點(diǎn) : " + y);

     }

  }

  class Location(override val xc: Int, override val yc: Int,

                      val zc :Int) extends Point(xc, yc){

    var z: Int = zc

    def move(dx: Int, dy: Int, dz: Int) {

      x = x + dx

      y = y + dy

      z = z + dz

      println ("x 的坐標(biāo)點(diǎn) : " + x);

      println ("y 的坐標(biāo)點(diǎn) : " + y);

      println ("z 的坐標(biāo)點(diǎn) : " + z);

    }

  }

  object ExtendsTest {

    def main(args: Array[String]) {

      val loc = new Location(10, 20, 15);

      // 移到一個(gè)新的位置

      loc.move(10, 10, 5);

    }

  }

  上述代碼中,第1-10行代碼是創(chuàng)建了一個(gè)Point類(lèi),并在類(lèi)中定義了兩個(gè)字段x,y以及一個(gè)方法move();第11-22行代碼是創(chuàng)建了一個(gè)Location類(lèi),并繼承Point類(lèi)重寫(xiě)Point類(lèi)的字段,并在Location類(lèi)中定義了三個(gè)字段x、y、z以及一個(gè)方法move();第24-27行代碼是主方法main(),并在主方法中創(chuàng)建Location的實(shí)例對(duì)象loc,使用該對(duì)象訪(fǎng)問(wèn)子類(lèi)中move()方法。

  運(yùn)行上述文件1中的代碼,效果如圖1所示。

 圖1 子類(lèi)重寫(xiě)父類(lèi)字段的運(yùn)行結(jié)果




猜你喜歡:
Scala編程的學(xué)習(xí)目標(biāo)

Scala語(yǔ)言是什么?有什么特點(diǎn)?如何安裝?

win10下載安裝Scala及環(huán)境變量配置教程【親測(cè)生效】

傳智教育大數(shù)據(jù)培訓(xùn)課程

0 分享到:
和我們?cè)诰€(xiàn)交談!