我有一个基类,它来自于一个Java库,我无法修改它的代码。这个类(A)有一个空方法(b),本应该声明为抽象方法:
class A {
def b { }
}
我在Scala中扩展了这个类并重写了该方法以使其成为抽象方法:
abstract class AA extends A {
override def b
}
现在我在一个trait中实现了这种方法:
trait B {
def b { println("B") }
}
如果我使用trait B扩展AA,会出现错误:覆盖类A中类型为Unit的方法b; 需要在trait B中添加`override'修饰符的类型为Unit的方法b。
class C extends AA with B {}
相反,如果代码像这样,所有内容都将被编译而不会出现错误,这对我来说有点矛盾:
abstract class AA {
def b
}
trait B {
def b { println("B") }
}
class C extends AA with B {}
我正在运行Scala 2.8.0RC3,对这门语言完全不熟悉(仅3天)。另一个奇怪且相关的行为是,在将b声明为抽象时,不需要使用override标签:
abstract class AA extends A {
def b
}
def toString():String
实现来替换Java类的Java toString实现相同的问题? - huynhjl