c#中的接口,抽象类,密封类,静态类和部分类之间的区别?如果所有类都在vb.net中可用?
答案 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)
以下是抽象和界面之间的区别:
抽象类有方法声明和方法定义,而接口只有方法声明。
抽象类称为部分抽象类,而接口称为完全抽象类。
抽象类功能由子类继承,而接口功能必须在实现类时实现。
抽象类支持访问说明符,而接口不支持访问说明符。
抽象类有正常变量和常量变量,而接口没有变量。
我们可以在抽象类中编写构造函数,而不能在接口中编写构造函数。
答案 4 :(得分:2)
可以在运行时实例化normal
类以形成具有字段的对象(字段是属性,函数,事件等)。 normal
类也可以继承/子类。
添加一个额外的关键字会改变课程的运作方式。
public, private, protected
会更改其他代码可以查看和使用此类的方式。static
添加到类意味着您无法使用new关键字创建实例,但只能通过静态函数访问它。示例:String.IsNullOrEmpty()
。sealed
意味着没有其他类可以继承'sealed'类。接口是contracts
,表示实现类将提供一些功能。 IDisposable
接口表示实现它的所有类都将具有Dispose函数。
答案 5 :(得分:0)
在抽象类中可以提供更多功能而不会影响子类。 在接口中,如果我们向接口添加任何方法,那么它将影响所有子类。