scala要求,若子类成员所有重写了父类的具体成员则必须带override这个修饰符;若成员实现的是同名的抽象成员时,则这个修饰符是可选的;若成员并未重写或实现什么其他基类(通常我们称为超类)里的成员则禁用这个修饰符。
这条规则给编译器提供了有用的信息来帮助避免某些难以捕捉的错误并使得对系统的改进更加安全。
abstract class T3 {
def fun1: String
def fun2: String = "T3.fun2"
}
class T3Impl extends T3 {
def fun1 = "T3Impl.fun1"
override def fun2 = "T3Impl.fun2"
}
object T3 {
def main(args: Array[String]): Unit = {
val t = new T3Impl
println(t.fun1)
println(t.fun2)
}
}