首页技术文章正文

Scala子类继承父类的方法【黑马程序员】

更新时间:2020-12-30 来源:黑马程序员 浏览量:

1577370495235_学IT就到黑马程序员.gif

  Scala和Java类似,只允许继承一个父类。不同的是,Java只能继承父类中非私有的属性和方法。而Scala可以继承父类中的所有属性和方法,子类拥有父类的所有特征。

  但是Scala在子类继承父类的时候,有以下几点需要注意:

  如果子类要重写一个父类中的非抽象方法,则必须使用override关键字,否则会出现语法错误。

  如果子类要重写父类中的抽象方法时,则不需要使用override关键字。

  下面,创建一个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行代码是创建了一个Point类,并在类中定义了两个字段x,y以及一个方法move();第11-22行代码是创建了一个Location类,并继承Point类重写Point类的字段,并在Location类中定义了三个字段x、y、z以及一个方法move();第24-27行代码是主方法main(),并在主方法中创建Location的实例对象loc,使用该对象访问子类中move()方法。

  运行上述文件1中的代码,效果如图1所示。

1609312255275_2.jpg
 图1 子类重写父类字段的运行结果




猜你喜欢:

Scala的控制结构语句有哪几种?各语法格式介绍

Windows系统中如何下载安装Scala插件?

什么是DAG?有向无环图的几种连贯关系讲解

黑马程序员大数据培训课程 

分享到:
在线咨询 我要报名
和我们在线交谈!