我想將盡可能多的可重複代碼移入基類,但我發現自己需要將派生類中的變量傳回基類。什麼是可接受的方式來設置傳遞參數到基類?
myClass
必須有一個無參數初始化方法,並通過myInterface.setup()
「設置」。
我怎麼能強制myBase
擴展器設置變量,而不必檢查他們是從someBaseMethod()
interface myInterface
{
void setup(String myStr);
void someBaseMethod();
}
abstract class myBase implements myInterface
{
String myStr = null;
protected abstract String getMyStr();
// called lots of times.
public void someBaseMethod()
{
if (myStr == null) myStr = getMyStr();
// ...
}
}
class myClass extends myBase
{
String s = null;
public void setup(String myStr)
{
s = myStr;
}
protected String getMyStr()
{
return s;
}
}
我會在基類的構造函數中使用一個參數。這樣,每個子類都必須先設置它,然後才能實例化。 –
通用命名約定= CapTheFirstLetter – Dapeng
@CarlosGavidia無法做到這一點,因爲我不知道該類實例化時的變量。 – Cheetah