我想扩展一个用Java实现的类。这是一个例子:
public interface JavaInterface {
/** Computes foo. */
public String foo();
}
public class ThisIsJava implements JavaInterface {
protected String foo = "foo";
/** Returns value of property foo. */
public String foo() { return foo; }
}
但是当我在Scala中扩展这个类时,如何消除字段和方法foo之间的歧义?
class ThisIsScala extends ThisIsJava {
def fooBar = super.foo + "/bar" // doesn't compile
}
答案 0 :(得分:7)
您无法访问foo
字段,因为它是私有的。您只能通过super.foo()
访问它。
更新:我认为你有这个问题,因为在Scala中,字段和方法之间没有区别,所以唯一的选项选项是为ThisIsJava提供适配器,并在Scala中扩展该适配器。