C# redefine sub-method in child class without redefining calling method in parent class
我有一个包含许多方法的父类,这些方法都是由一个顶级方法调用的。
从概念上讲,父类如下:
1 2 3 4 5 6 7 8 9 | class ParentClass { void TopMethod(){ Lots of code and calls Methods1-N defined below} void Method1(){} void Method2(){} ... void MethodN(){} } |
我还有很多其他的类,我只想在这个基础类上做一些细微的变化。所以我声明它们继承自parentclass。我需要做的就是在子类中更改method1的定义。但是,我如何告诉子类使用parentClass中的所有其他内容,只使用method1的新定义。特别是,我不希望在子类中重写topmethod的重复代码,这样我就可以使它在子类中使用重定义的method1,而不是父类中的method1。
您需要使
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class ParentClass { public void TopMethod() { Console.WriteLine("Top method in parent"); Method1(); } public virtual void Method1() { Console.WriteLine("Method1 in parent"); } } public class ChildClass : ParentClass { public override void Method1() { Console.WriteLine("Method1 in child"); } } |
现在调用每个类:
1 2 3 4 5 |
会给你这个输出:
1 2 3 4 | Top method in parent Method1 in parent Top method in parent Method1 in child |
来自docs:virtual关键字