c#中的abstract继承

dio*_*nou 0 c# inheritance abstract

我有一节课:

public abstract BaseClass
{
    public RequestType MethodOne(Request request)
    {
        // some work here with objectOne
        return PostMethodOne(objectOne);
    }
    public abstract RequestType PostMethodOne(Request request);
}
Run Code Online (Sandbox Code Playgroud)

然后我从基类开始:

public class ChildClass : BaseClass
{
    public override PostMethodOne(Request request)
    {
     // some work with request
        return request;
    }
}
Run Code Online (Sandbox Code Playgroud)

是methodOne被调用然后我可以在PostMethod通过methodOne后处理请求吗?我必须打电话给base.MethodOne吗?

Jam*_*iec 6

MethodOne不是抽象的或虚拟的,这意味着它只是简单地继承ChildClass.

POstMethodOne是抽象的,因此你必须实现它ChildClass.调用者这样做:

var myInstance = new ChildClass();
myInstance.MethodOne();
Run Code Online (Sandbox Code Playgroud)

将调用MethodOne从中BaseClass调用PostMethodOne- 这是抽象的并在ChildClass其中实现- 将自动调用.

这是一种非常常见的模式,你只犯了一个错误 - POstMethodOne应该protected不是public.