hangscer

类型检查和转换

2017/02/11

Scala和Java中的类型检查和转换

Scala Java
obj.isInstanceOf[C1] obj instanceof C1
obj.asInstanceOf[C1] (C1)obj
classOf[C1] C1.class
  • p.isInstanceOf[Employee],检查是否指向Employee类以及其子类
  • p.getClass==classOf[Employee],检查p指向Employee,而不是其子类

相比类型转换与检查,模式匹配通常better


子类的构造



上面的这段代码两点作用:

  • 定义了一个子类Employee
  • 定义了调用超类构造器的主构造器

重写字段

覆写限制
def 只能覆写另一个def
val 只能覆写另一个val或者不带参数的def
var 只能重写另一个抽象的var,抽象很重要

匿名子类


alien指向了一个结构类型的对象,该类型记为Person{def greeting:String},还可以用这个类型作为参数类型的定义:def fun(p:Person{def greeting:String})=doSomething