簡體   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