快学Scala读书笔记之 Chapter 8(继承)

来源:互联网 发布:java todo注释 编辑:程序博客网 时间:2024/05/16 09:05

第八章 继承

要点

  • extends、final关键字和Java中相同,可以将类声明为final,这样它就不能被扩展,还可以将单个方法或字段声明为final,以确保它们不能被重写,注意这和Java不同,在Java中,final字段是不可变的,类似Scala的val。
  • 重写方法时必须用override,Scala中调用超类的方法和Java完全一样,使用super关键字
  • 只有主构造器可以调用超类的主构造器,在Scala的构造器中,不能调用super(params),不像Java,可以用这种方法来调用超类构造器
  • Scala VS Java in 类型检查与转换
Scala Java obj.isInstanceOf[Cl] obj instanceof Cl obj.asInstanceOf[Cl] (Cl)obj classOf[Cl] Cl.class

但是模式匹配是一个更好地选择

p match {    case s: Employee => ...    case _ => ...}
  • 超类的构造
    类有一个主构造器和任意数量的辅助构造器,每个辅助构造器都必须以对先前定义的辅助构造器或主构造器的调用开始,因此,辅助构造器永远不能直接调用超类的构造器,子类的辅助构造器最终都会调用主构造器,只有主构造器可以调用超类的构造器
  • 可以重写字段
用val 用def 用 var 重写val 子类有一个私有字段(与超类的字段名字相同,这没问题,)getter方法重写超类的getter方法 错误 错误 重写def 与重写val类似 与Java一样 可以重写getter/setter,只重写getter会报错 重写var 错误 错误 仅当超类的var是抽象的才可以

子类重写超类的抽象方法时,不需要override关键字

  • Scala的继承层级
    Scala的继承层级
0 0
原创粉丝点击