0
考慮我們有抽象base class A
虛擬方法foo1()
正在調用一些其他的虛擬方法foo2()
(foo1和foo2的基類級別上實現,而且虛擬的)虛擬方法和inhertitance設計
我也已經class B
這是從class A
繼承的具體類。
現在,Class A
繼承了foo1()
(當然foo2()
的,但如果我想要做的foo1()
相同的操作,但這次通過調用foo3()
而不是foo2()
,我怎麼能做到這一點,什麼是最好的實踐/設計做所以
我看到一些選項,在class B
想有更好的
覆蓋foo1()和寫相同的代碼爲
base.foo1()
但更改電話foo2()
到foo3()
? - >這是一些WH在代碼複製時,因爲除了調用foo2()
或foo3()
以外,所有代碼都是相似的。重寫
foo2()
在具體的類B.
的是,現在繼承foo1()
將在午餐foo2()
的class B
重寫版本,否則將仍然需要實現同級別class A
的意思呢?
這是選項2的代碼示例:(更像是僞代碼)
public abstract Class A
{
public virtual void foo1()
{
doing some actions123
foo2();
doing some actions4
}
public virtual void foo2()
{
Console.writeln("Class A foo2");
}
}
public Class B : A
{
public override void foo2()
{
foo3();
}
public void foo3()
{
Console.writeln("Class B foo3");
}
}
public static void main()
{
B bClass = new B();
B.foo1();
}
感謝
總是調用大多數重寫的實現。所以選項2將起作用。 –