首頁技術文章正文

Scala子類繼承父類的方法【黑馬程序員】

更新時間:2020-12-30 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif

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

  但是Scala在子類繼承父類的時候,有以下幾點需要注意:

  如果子類要重寫一個父類中的非抽象方法,則必須使用override關鍵字,否則會出現語法錯誤。

  如果子類要重寫父類中的抽象方法時,則不需要使用override關鍵字。

  下面,創(chuàng)建一個Point類和一個Location類,并且Location類繼承Point類,演示子類Location重寫父類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 的坐標點 : " + x);

       println ("y 的坐標點 : " + 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 的坐標點 : " + x);

      println ("y 的坐標點 : " + y);

      println ("z 的坐標點 : " + z);

    }

  }

  object ExtendsTest {

    def main(args: Array[String]) {

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

      // 移到一個新的位置

      loc.move(10, 10, 5);

    }

  }

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

  運行上述文件1中的代碼,效果如圖1所示。

1609312255275_2.jpg
 圖1 子類重寫父類字段的運行結果




猜你喜歡:

Scala的控制結構語句有哪幾種?各語法格式介紹

Windows系統(tǒng)中如何下載安裝Scala插件?

什么是DAG?有向無環(huán)圖的幾種連貫關系講解

黑馬程序員大數據培訓課程 

分享到:
在線咨詢 我要報名
和我們在線交談!