【问题标题】:Can abstract classes have implementation in c#?抽象类可以在c#中实现吗?
【发布时间】:2012-02-25 22:46:06
【问题描述】:

到目前为止,编译器似乎并不介意,但我只是想通过在我的抽象类中实现某些方法来仔细检查我是否以任何方式为失败做好准备。

【问题讨论】:

    标签: c# oop


    【解决方案1】:

    一个抽象类通常有一个或多个抽象方法。所以是的,它可以实现一些方法。目标是强制用户实现这些方法以使对象正常工作。有时抽象类用于提供某些接口的“基本”实现,让最终用户只指定关键方法。您也可以拥有一个没有任何抽象方法的抽象类:在这种情况下,您断言必须从该类派生才能使用它。

    【讨论】:

    • 是否可以创建没有抽象方法的抽象类,只需将类标记为抽象...
    • 抽象类意味着它必须被继承才能被实例化。正如 Kirill Polishchuk 所说,并不意味着它应该有抽象方法。
    • @KirillPolishchuk 谢谢Krill,我从来没有注意到,我更正了答案。
    【解决方案2】:

    在抽象类中有一些实现是很常见的。

    如果根本没有实现,请考虑使用接口而不是抽象类。

    【讨论】:

      【解决方案3】:

      完全可以实现一些方法而让其他方法保持抽象。

      如果所有方法都必须是抽象的,那么你不妨使用一个接口。

      【讨论】:

        【解决方案4】:

        是的。 abstract 类不能被实例化(你必须实例化一个继承自抽象类的类),但它可以包含实现。

        【讨论】:

          【解决方案5】:

          这很好并且被允许,abstract class 至少有一个成员(方法/属性)未实现,因此无法实例化。

          interface 也称为 pure abstract class,这意味着它是 100% 抽象的,因此不允许您指定任何实现。

          请记住,有很多文章和意见关于从不从另一个具体类派生一个具体类,而只能从抽象类派生......至少这是几年前 C++ 的趋势,然后我转向C# 方面,开始工作更多,没有时间继续阅读那些好文章... :)

          【讨论】:

          • 你可以在C#中拥有一个没有任何抽象成员的抽象类
          猜你喜欢
          • 2010-09-21
          • 2018-12-16
          • 1970-01-01
          • 1970-01-01
          • 2011-02-11
          • 1970-01-01
          • 2011-10-10
          • 1970-01-01
          • 2021-07-10
          相关资源
          最近更新 更多