我有類A,方法foo和bar,由A1和A2實現。 A1和A2的功能都是一樣的。換句話說:靜態方法通過虛擬實現調用派生類型? (Android)
public class A {
public int foo() { return 0; };
public int bar() { return 1; };
}
class A1 extends A {
public int AnotherFooFunction() { return foo(); }
public int AnotherBarFunction() { return bar(); }
}
class A2 extends A {
public int AnotherFooFunction() { return foo(); }
public int AnotherBarFunction() { return bar(); }
}
以這種方式保持代碼或將這些虛擬方法換成靜態方法會更好嗎? (在Java中,所有非最終/非私有都被認爲是虛擬的,對嗎?)
根據Android Developer Docs中的Designing for Performance部分,我應該將這些虛擬方法換成靜態方法。因此,上述變爲:
public class A {
public int foo() { return 0; };
public int bar() { return 1; };
}
class A1 extends A {
public int AnotherFooFunction() { return A.foo(); }
public int AnotherBarFunction() { return A.bar(); }
}
class A2 extends A {
public int AnotherFooFunction() { return A.foo(); }
public int AnotherBarFunction() { return A.bar(); }
}
這是它應該如何「應該」?我完全意識到我可能會誤解文檔中的這一段。
在上一個代碼示例中,是否將'class A'中的方法聲明爲'public static int'? – mob 2010-07-08 17:51:20