[英]Inherit from a non-abstract class
我有幾個繼承自 BaseClass 的類,BaseClass 有一個名為 GetData 的抽象方法。 在其中一個中,我想基本上再次繼承並提供使用一種名為 GetArticles 的新方法,我從 GetData 調用該方法。 這是代碼。
public abstract class BaseClass
{
internal abstract void GetData();
}
internal class FirstClass : BaseClass
{
internal override void GetData()
{
// calls GetArticles
}
protected void GetArticles()
{
}
}
internal class SecondClass : FirstClass
{
protected new void GetArticles()
{
}
}
GetArticles
永遠不會在SecondClass
中SecondClass
。 它調用FirstClass
那個,即使我的對象是SecondClass
類型。 我無法在FirstClass
Abstract
創建GetArticles
,因為我想FirstClass
使用FirstClass
。
有什么建議?
您的方法必須在FirstClass
標記為virtual
並在SecondClass
使用override
關鍵字override
。
internal class FirstClass : BaseClass
{
internal override void GetData()
{
// calls GetArticles
}
protected virtual void GetArticles()
{
}
}
internal class SecondClass : FirstClass
{
protected override void GetArticles()
{
}
}
new
修飾符隱藏了底層的虛方法,這不是你想要的。 在 MSDN 上查看了解何時使用覆蓋和新關鍵字(C# 編程指南) 。
將FirstClass
GetArticles
聲明為虛擬。 在第二個類中刪除new
並添加override
使GetArticles
虛擬化。
protected virtual void GetArticles()
{
}
普通類不能包含抽象方法。而抽象類可以包含普通方法。 如果普通類繼承抽象類並持有任何抽象方法,則必須由於派生類中的繼承而被覆蓋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.