zoukankan      html  css  js  c++  java
  • scala学习手记13

    在scala里,类继承有两点限制:

    • 重写方法需要使用override关键字;
    • 只有主构造函数才能往父类构造函数中传参数。

    在java1.5中引入了override注解,但不强制使用。不过在scala中要想重写方法必须使用override关键字。如果确实重写了父类的方法又不使用override关键字的话,则会在编译时报错,提示没有使用override修饰符。

    scala的副构造函数必须调用主构造函数或是另一个副构造函数。只有在主构造函数中才能向父类的构造函数中传递数据。可以看出来主构造函数如同父类和子类中间的一道关卡:它既负责完成子类的初始化,也负责与父类的沟通。

    下面的这段代码演示了下上述内容:

    class Vehicle(val id: Int, val year: Int) {
      override def toString(): String = "ID: " + id + " Year: " + year
    }
    
    class Car(override val id: Int, override val year: Int, var fuelLevel: Int) extends Vehicle(id, year) {
      override def toString(): String = super.toString() + " Fuel Level: " + fuelLevel
    }
    
    val car = new Car(1, 2009, 100)
    println (car)

    在代码中定义了两个类:Vehicle和Car。Car继承了Vehicle。在继承的时候,因为要向父类传递参数,所以Car类主构造函数的一部分必须能匹配父类的构造函数。因为Car类构造函数中的id和year两个成员变量源自父类Vehicle,所以需要使用override关键字修饰。此外,因为这两个类都重写了java.lang.Object的toString方法,所以重写的方法前面需要使用override关键字修饰。

    看一下执行结果:

    image

    就这样!

    ###########

  • 相关阅读:
    .NET Framework 精简版多线程提示
    创建全球化的 Windows Mobile 应用程序
    【转】Windows Mobile 进阶系列——多窗体应用的性能与编程调试1
    关于MOBILE注册表操作.
    windows下squid安装与配置
    关于Windows mobile注册表
    aaaaaaaaaaaaaa
    记GraphicsMagick压缩图片命令
    使用Sublime Text 2开发php
    SQL Server 2005中使用事务发布实现数据库复制
  • 原文地址:https://www.cnblogs.com/amunote/p/5592349.html
Copyright © 2011-2022 走看看