接口,抽象类,密封类,静态类和C#中的部分类之间的区别?

时间:2011-01-21 06:34:57

标签: c#

c#中的接口,抽象类,密封类,静态类和部分类之间的区别?如果所有类都在vb.net中可用?

6 个答案:

答案 0 :(得分:41)

  • 抽象类
    应该在存在IS-A关系时使用,并且不允许从该抽象类创建实例。 示例:动物是一个抽象的基类,可以从中获得特定的动物,即马,猪等。 通过制作Animal摘要,不允许创建Animal实例。

  • <强>接口
    应该使用接口来实现类中的功能。假设我们想要一匹马能够跳转,可以创建一个界面IJumping。通过将此接口添加到Horse,IJumping中的所有方法都应该实现。在IJumping本身只有声明(例如,定义了StartJump和EndJump),在Horse中应该添加这两种方法的实现。

  • 密封班
    通过使马密封,不可能从中继承,例如,制作像Pony或WorkHorse这样的课程,你喜欢从马继承。

  • 静态课程
    主要用于&#39;实用程序&#39;功能。假设您需要一些方法来计算在Horse类中使用的某些数字的平均值,但是您不想将它放在Horse中,因为它不相关且它也与动物无关,您可以创建一个上课有这种方法。您不需要这样的实用程序类的实例。

  • 部分课程
    部分类只不过是将类的文件拆分为多个较小的文件。这样做的原因可能是仅将部分源代码共享给其他人。如果原因是文件太大,请考虑先将类拆分为较小的类。

答案 1 :(得分:14)

  • 界面:仅限方法定义

  • 抽象类:一些方法实现,一些方法抽象(仅限方法定义)

  • 密封课程:您所在的课程 可能不会继承

  • 静态类:只有一个类 静态方法(没有实例 存在,可以调用所有方法 没有实例)

  • Partial class:一个类 定义为2个或更多个单独的 不同的类定义 模块。

是的,它们都可以在C#和VB中使用,尽管VB在某些情况下使用不同的关键字。

答案 2 :(得分:3)

我想以下链接对您有用。

http://letschattechnology.com/interface-vs-abstract-classes/

基本的逻辑区别在于,如果两个类之间存在将继承抽象类的关系,并且为彼此不相关但具有一些共同功能的类创建接口,则创建抽象类。

答案 3 :(得分:2)

以下是抽象和界面之间的区别:

  1. 抽象类有方法声明和方法定义,而接口只有方法声明。

  2. 抽象类称为部分抽象类,而接口称为完全抽象类。

  3. 抽象类功能由子类继承,而接口功能必须在实现类时实现。

  4. 抽象类支持访问说明符,而接口不支持访问说明符。

  5. 抽象类有正常变量和常量变量,而接口没有变量。

  6. 我们可以在抽象类中编写构造函数,而不能在接口中编写构造函数。

答案 4 :(得分:2)

可以在运行时实例化normal类以形成具有字段的对象(字段是属性,函数,事件等)。 normal类也可以继承/子类。

添加一个额外的关键字会改变课程的运作方式。

  • 添加public, private, protected会更改其他代码可以查看和使用此类的方式。
  • static添加到类意味着您无法使用new关键字创建实例,但只能通过静态函数访问它。示例:String.IsNullOrEmpty()
  • 向类添加sealed意味着没有其他类可以继承'sealed'类。

接口是contracts,表示实现类将提供一些功能。 IDisposable接口表示实现它的所有类都将具有Dispose函数。

答案 5 :(得分:0)

在抽象类中可以提供更多功能而不会影响子类。 在接口中,如果我们向接口添加任何方法,那么它将影响所有子类。