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

sar*_*ran 13 c#

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

Mic*_*ers 41

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

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

  • 密封类
    通过使马密封,不可能继承它,例如制作像Pony或WorkHorse这样的类,你喜欢从马继承.

  • static class
    主要用于'实用程序'函数.假设您需要一些方法来计算在Horse类中使用的某些数字的平均值,但是您不希望将它放在Horse中,因为它不相关且它也与动物无关,您可以创建一个类到有这种方法.您不需要此类实用程序类的实例.

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


Pau*_*ter 14

  • 接口:仅限方法定义

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

  • 密封类:您不能继承的类

  • 静态类:只有静态方法的类(不存在实例,可以在没有实例的情况下调用所有方法)

  • 部分类:在不同模块中的2个或多个单独的类定义中定义的类.

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


Sou*_*avM 2

以下是抽象和接口之间的区别:

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

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

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

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

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

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