C# 中何时使用抽象类、何时使用接口

发布于 2024-09-15 01:42:27 字数 311 浏览 2 评论 0原文

可能的重复:
抽象类与接口
接口与基类

嗨,

在C#中我们什么时候应该使用接口,什么时候应该使用抽象类? 请举例说明

Possible Duplicates:
Abstract classes vs Interfaces
Interface vs Base class

Hi,

In C# when should we use interfaces and when should we use abstract classes?
Please explain with example

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谈下烟灰 2024-09-22 01:42:27

抽象类,如果你想实现基本功能和一些必须由实现者覆盖的属性/方法:

public abstract class Entity
{
     public int Id { get; set;}

     public bool IsNew { get { return Id == 0; } }

     public abstract DoSomething(int id); // must be implemented by concrete class
}

接口,如果你想定义一个类必须包含哪些属性/方法,而不实现任何功能:

public interface IRepository
{
    object Get(int id);
    IEnumerable<object> GetAll();
}

Abstract class, if you want to implement basic functionality and some properties/methods that must be overwritten by the implementer:

public abstract class Entity
{
     public int Id { get; set;}

     public bool IsNew { get { return Id == 0; } }

     public abstract DoSomething(int id); // must be implemented by concrete class
}

Interface, if you want to define, which properties/methods a class must contain, without implementing any functionality:

public interface IRepository
{
    object Get(int id);
    IEnumerable<object> GetAll();
}
薄凉少年不暖心 2024-09-22 01:42:27

当您描述契约和抽象类时,当您实现将在派生类之间共享的功能时,请使用接口。

使用示例可以是模板模式策略模式

use interfaces when you don't when your describing a contract and abstract classes when your implmenting functionality that will be shared among deriving classes.

To examples of usage could be template pattern and Strategy pattern

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文