这是我的界面:
Public Interface IProductComputer
Sub CalculatePrice
Sub CalculateTax
Sub Calculate
End Interface
以下是我的课程:
Public Class Product1
Implements IProductComputer
........
End Class
Public Class Product2
Implements IProductComputer
......
End Class
问题:
我的界面可以在无限数量的类中使用,当然它应该分别在所有类中实现。但是如果方法中有一些共同的部分呢?例如,在CalculateTax方法中可能有一个共同的公式,并且在所有实现中包含此公式似乎并不令人愉快(而是在接口中实现此公式并在实现接口的类中实现不常见的部分)。
我已经看到了一些.Net预定义接口,它们有一些固定的部分,比如IDisposable(它实现时有一些主要的实现)。有没有办法创建像他们这样的界面?
(上面的代码是用Vb.Net编写的,但我也知道C#语法) 如果我不够清楚,请让我解释一下。
答案 0 :(得分:2)
根据定义,接口不能实现任何方法/属性,只能定义它们。您有两种方法可以解决此问题:
将您的实现从接口更改为抽象类(我相信这是VB.net中的MustInherit)。抽象类可以实现一些成员,而其他成员只是定义。
将其保留为接口,如果您有已实现的方法,则可以将它们实现为接口的扩展方法。
这些解决方案都不适合您,但希望能够满足您的需求。
答案 1 :(得分:1)
你的问题的简单答案是否:接口不能包含代码,只有一个可接受的IDisposable模式,它被多次实现。
然而,围绕这个
有几种方法abstract
类而不是接口。你失去了一些实现能力,因为它现在是一个类,因此实现不能从不同的类继承。但是,这被认为是接口和抽象类之间的主要区别 - 代码