簡體   English   中英

抽象類繼承另一個抽象類問題

[英]an abstract class inherits another abstract class issue

我有一個繼承架構,如下所示:

public abstract class BaseAttachment
{
    public abstract string GetName();
}

public abstract class BaseFileAttachment:BaseAttachment
{
    public abstract string GetName();
}

public class ExchangeFileAttachment:BaseFileAttachment
{
    string name;
    public override string GetName()
    {
        return name;
    }
}

我基本上想調用ExchangeFileAttachment類的GetName()方法; 但是,上述聲明是錯誤的。 對此有任何幫助表示贊賞。 謝謝

我看到的兩個直接問題是你的最終ExchangeFileAttachment類被聲明為abstract ,所以你永遠無法實例化它。 除非你有另一級別的繼承,否則你不會向我們展示,所以無法調用它 - 沒有辦法訪問它。 另一個問題是BaseFileAttachment有一個隱藏BaseAttachment GetName()BaseAttachment 在您向我們展示的結構中,它是多余的,可以省略。 因此,“更正”的代碼看起來更像是:

public abstract class BaseAttachment
{
    public abstract string GetName();
}

public abstract class BaseFileAttachment : BaseAttachment
{
}

public class ExchangeFileAttachment : BaseFileAttachment
{
    string name;
    public override string GetName()
    {
        return name;
    }
}

我在引號中加了修正,因為這個用例仍然沒有多大意義,所以我希望你能提供更多的信息,或者這在你的結尾更有意義。

只需從BaseFileAttachment刪除重新聲明:

public abstract class BaseFileAttachment : BaseAttachment
{
}

BaseFileAttachment已經從BaseAttachment繼承了抽象GetName聲明。 如果您真的想在BaseFileAttachment再次提及它,請使用override關鍵字:

public abstract class BaseFileAttachment : BaseAttachment
{
    public override abstract string GetName(); // that's fine as well
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM