我对接口和抽象类感到困惑,我知道它们之间的技术差异,比如接口不能有字段而抽象可以,接口应用多重继承而抽象类不能。
我想知道我是否有一个抽象类,它有4个方法,但没有默认实现,而我与4个方法的接口太确定了,没有实现,那么使用它们之间有什么区别呢?对我来说也是一样的!
在这种情况下,我什么时候可以选择抽象类而不是接口?
发布于 2015-02-09 11:40:58
选择它们的规则如下:
如果您有一个空的抽象类,则应该始终用一个接口替换它。
发布于 2015-02-09 23:18:31
与接口相比,抽象类至少有三个优点:
Int32类型的字段作为ref参数传递给通过Interlocked.Increment更新它的方法;属性不能。虽然可以组合Int32类型的属性并提供像AtomicIncrementFoo这样的方法,但是使用字段可以避免大量样板代码的需要。void SomeMethod(int Foo) { MyInterfaceHelper.SomeMethod(this, Foo); }。这不仅需要大量样板代码,而且减少样板代码的愿望常常导致接口作者忽略接口真正应该包含的内容。我不知道是否有任何理由.NET和相关语言不能提供上述功能的接口,但到目前为止它们还没有。
https://stackoverflow.com/questions/28405927
复制相似问题