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将起作用。 –