[英]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.