繁体   English   中英

重写基类抽象方法并将其隐藏在派生类中

[英]Overriding Base Class abstract methods and hiding them in derived classes

我有两种基本类型:

public abstract class Base
{
    public abstract object Work();
}

public abstract class AuthenticatedBase : Base
{
    public abstract object Work(T request);
}

经过身份验证的类需要做一些额外的工作来预先检查登录名。 然后,我从两个基类继承了不同的类。

public class A : Base
{
    public override object Work()
    {
        // Work here
    }
}

public class B : AuthenticatedBase
{
    public override object Work(T request)
    {
        // Work here
    }
}

基本上,当我创建一个从AuthenticatedBase派生的新类B时,Visual Studio说我需要从Base类实现Work(),尽管我在AuthenticatedBase中有一个替代实现,但要重写,当然要使用不同的参数。 我应该怎么做才能不必在继承的类中从基类实现Work()方法?

在AuthenticatedBase中实现无参数的Work方法,并使用“ sealed”关键字阻止其在AuthenticatedBase的继承者上显示。

您必须实现它,无法解决它。 在这种情况下,多继承会派上用场。

您可以使用composition,以便B引用A 然后B.Work()可以调用A.Work()

或者,实现B.Work()使其调用B.Work(T) 甚至让Base.Work()是具有A的基本实现的虚拟方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM