Mar*_*ras 9 c# oop class derived-class
假设有基类A和派生类B。
类A有两个函数:fun1()和fun2(),其中fun1()调用fun2()。
类B覆盖fun1()and fun2(),并再次fun1()调用fun2().
但是,我想调用base.fun1()overriden fun2()。由于base.fun1()调用fun2()而不是基类的版本创建了非常不幸的循环:
fun1() -> fun2() -> base.fun1() -> fun2() -> base.fun1() -> ...
有没有办法强制base.fun1()调用基本版本fun2()?我知道真正的问题可能在于这些类的糟糕设计,但我仍然很好奇是否有可能。
小智 5
使用方法隐藏。
方法隐藏也称为阴影。父类的方法对子类可用,而无需在 shadowing 中使用 override 关键字。子类有自己的相同功能版本。使用 new 关键字来执行阴影。
public class A
{
public virtual void Func1() { Func2(); }
public virtual void Func2() { Console.WriteLine("A: Func2"); }
}
public class B : A
{
public override void Func1() { Func2(); }
public new void Func2() { base.Func1(); }
}
Run Code Online (Sandbox Code Playgroud)