在OOP和C#中密封抽象类的真正用途是什么?

Tho*_*mas 2 c# oop

我得到了密封抽象类的示例代码.我只是知道密封抽象类的用途是什么.无论什么是必须扩展的抽象和密封关键字阻止扩展类.因此当类被密封和抽象时,它可以被扩展并且也被实例化.那么密封抽象类的真正用途是什么呢?

有人告诉我它会解决静态类的目的.如果可能的话,当需要将类设计为密封的抽象类时,请讨论密封抽象类的使用,其中包含少量示例代码和场景.

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;
}
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Dar*_*rov 9

此代码将无法编译.一堂课不能抽象和封印.这没有任何意义:

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

  • 我的观点是C#中的`static`类映射到IL中的`sealed abstract`. (4认同)

And*_*son 6

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

希望这能回答你的问题.


afe*_*gin 5

C#不允许你拥有一个既密封又抽象的类.它不会编译.对于静态类(仅使用静态方法),将其标记为静态以防止意外实例化.