3

封印された抽象クラスのサンプルコードを入手しました。私は、封印された抽象クラスの使用法を知っています。拡張しなければならない抽象的なものは何でも、キーワードを封印してクラスの拡張を防ぎます。したがって、クラスがシールされて抽象化されている場合、クラスを拡張してインスタンス化することもできます。では、封印された抽象クラスの実際の用途は何でしょうか?

静的クラスの目的を解決すると誰かが私に言いました。可能であれば、クラスがシールされた抽象クラスとして設計する必要がある場合、いくつかのサンプル コードとシナリオを使用して、シールされた抽象クラスの使用について説明してください。

sealed abstract class BaseBook : IBook
{
private string _title;

public virtual string Author
{
    get
    {
        Console.WriteLine("Base book GET!");
        return _title;
    }
    set
    {
        Console.WriteLine("Base book SET!");
        _title = value;
    }
}

public string Title
{
    get;
    set;
}
}

ありがとう

4

5 に答える 5

9

このコードはコンパイルされません。クラスを抽象化してシールすることはできません。これは意味がありません:

CS0418 - 'BaseBook': an abstract class cannot be sealed or static

于 2012-05-15T14:30:43.557 に答える
7

MSDN:It is not permitted to use the abstract modifier with a sealed class.

リンク: http://msdn.microsoft.com/en-us/library/88c54tsw%28v=vs.71%29.aspx

それがあなたの質問に答えることを願っています。

于 2012-05-15T14:30:21.343 に答える
5

C# では、封印された抽象クラスを持つことはできません。コンパイルされません。静的クラス (静的メソッドのみを持つクラス) の場合は、静的としてマークして、不注意によるインスタンス化を防ぎます。

于 2012-05-15T14:30:28.830 に答える
2

単に存在しないので役に立たない。

于 2012-05-15T14:31:27.503 に答える
2

まず、C# でクラスを宣言することはできませんsealed abstract。これは違法です。

クラスが封印されて抽象化されている場合、クラスを拡張してインスタンス化することもできます

いいえ、逆です。継承もインスタンス化もできません...

于 2012-05-15T14:32:03.527 に答える