[英]scala inheritence from java initialisation issue
說我在Java中有以下課程:
class A
{
public A()
{
init();
}
void init()
{
System.out.println("A:init()");
}
}
然后我在scala中從中繼承如下:
class B extends A {
var x = 3
override def init(): Unit = println("init: x = " + x)
}
當我構造B的實例時,我的init覆蓋中的x值當然不會是3,因為在該階段尚未初始化。 如果我不能更改Java類,那么有人可以在這里推薦最佳方法,以確保在調用init()時初始化了我的類字段。
謝謝
德斯
您可以將該變量放入一個伴隨對象中,然后執行
override def init(): Unit = println("init: x = " + Bx)
其中B
的聲明是這樣的:
object B {
val x = 3
}
您也可以在init()
定義/初始化x
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.