Scala 在使用抽象方法时重写该方法
我想做这样的事情Scala 在使用抽象方法时重写该方法,scala,overriding,Scala,Overriding,我想做这样的事情 abstract class Foo { def bar:String def modifiedFoo:Foo = new Foo(){ override def bar = super.bar+"\n" } } 但这是不合法的(“Foo类中的方法栏是从super访问的, 它不能是抽象的,除非它被声明为抽象的成员重写 并覆盖“仅对性状合法的inturn” 我可以将方法移到modifiedFoo 进入带有签名modifiedFoo(fo
abstract class Foo {
def bar:String
def modifiedFoo:Foo = new Foo(){
override def bar = super.bar+"\n"
}
}
但这是不合法的(“Foo类中的方法栏是从super访问的,
它不能是抽象的,除非它被声明为抽象的成员重写
并覆盖“仅对性状合法的inturn”
我可以将方法移到modifiedFoo
进入带有签名modifiedFoo(foo:foo)的伴随对象,但这是
不那么优雅。
你如何处理这个问题 我想你可以用以下方式使用
self
:
abstract class Foo {
self: Foo =>
def bar: String
def modifiedFoo: Foo = new Foo() {
override def bar = self.bar + "\n"
}
}
我认为您可以通过以下方式使用
self
:
abstract class Foo {
self: Foo =>
def bar: String
def modifiedFoo: Foo = new Foo() {
override def bar = self.bar + "\n"
}
}