我有一个父类,其中有许多方法,所有方法都由一个顶级方法调用。
从概念上讲,父类如下:
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而不是ParentClass中的Method1。
答案 0 :(得分:1)
从文档中:virtual keyword
答案 1 :(得分:1)
您需要将Method1
,Method2
等虚拟化,并在子类中覆盖它们。例如:
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");
}
}
现在调用每个班级:
var parent = new ParentClass();
var child = new ChildClass();
parent.TopMethod();
child.TopMethod();
将为您提供此输出:
Top method in parent
Method1 in parent
Top method in parent
Method1 in child