static方法在繼承中如何使用?

red_mark發表於2004-10-13
我有這樣一些類
父類:
public abstract class Base {
public static Base T(String param){
?????
ret.f(param);
return ret;
}
public abstract void f(String param);
}

子類:
public class AAA extends Base{
private String data;
public void f(String param) {
data="AAA's"+param;
}
}
子類:
public class CCC extends Base {
private String data;
public void f(String param) {
data="CCC's"+param;
}
}

呼叫:
public class Test {
public static void main(String[] args) {
AAA a = (AAA) AAA.T("orange");
CCC c = (CCC) CCC.T("apple");
}
}

我現在想問的問題是
1. AAA.T()和CCC.T()是從Base繼承過來的,這樣用是否符合常理?
2. 在Base.T()中能不能得知是透過哪個類呼叫過來的,並透過該資訊建立該子類的例項,呼叫子類覆蓋的方法f(),最後返回該子類?

相關文章