【发布时间】:2019-07-22 14:10:23
【问题描述】:
我有一个父类,其中包含许多方法,它们都由一个顶级方法调用。
从概念上讲,父类如下所示:
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。
【问题讨论】:
-
好吧,如果 Method1、Method2 等都是虚拟的,那么您只需在派生类中覆盖 Method1...
-
您在父类中使您的方法为虚拟方法,并在需要时在继承的类中覆盖它们
-
还要考虑对您的成员使用适当的访问修饰符(本例中的方法)。在您的示例代码中,默认情况下所有内容都是
private,这意味着基类无法看到这些成员(或覆盖它们)。如果您想在派生类中访问基类的成员,您至少需要protected。如果你想定义一个新的实现,它也需要被标记为virtual。 -
DavidG 的帖子是我想要做的——谢谢!我在子类中只使用“new”关键字,而不是在父类中使用“virtual”,在子类中使用“override”。
标签: c# inheritance