首先在基类中运行该方法然后在派生类中运行相同的方法,我需要做什么?这是个好主意吗?
我希望在基类中运行常见操作,并在同一方法中在派生类中扩展它。这是通常的做法吗?
public abstract class MyBase
{
void DoStuff()
{
//some common implementation
}
}
public class MyDerived : MyBase
{
void DoStuff()
{
// DoStuff in the base first
// Then DoStuff in here
}
}
答案 0 :(得分:5)
class base
{
protected virtual void method()
{
// do some stuff in base class, something common for all derived classes
}
}
class derived : base
{
public override void method()
{
base.method(); // call method from base
// do here some more work related to this instance of object
}
}
这不是一个坏主意,当我为所有派生类提供一些通用功能时,我会使用它。
答案 1 :(得分:4)
如果你想保证运行基类逻辑(而不是依赖派生类是礼貌的),你可以这样做:
public void Method()
{
//Stuff that should always happen in base class
OnMethod();
}
protected virtual void OnMethod()
{
//Default base class implementation that derived class can either override or extend
}
答案 2 :(得分:1)
使用base.TheMethod()
从派生类中运行基类中的方法。
如果要从基类运行派生类的方法,则必须将基类强制转换为派生类。这意味着你的班级需要知道谁在推导它,这会破坏封装,应该避免。