假设我有以下界面:
Public Interface IFooBase
Sub Bar()
End Interface
Public Interface IFoo
Inherits IFooBase
Sub Zim()
End Interface
我理解一个实现IFoo
的类隐式实现IFooBase
,并且所有IFooBase成员都可以通过派生接口(例如Public Sub Bar() Implements IFoo.Bar
)指定而没有问题,并且没有错误是如果一个类指定它实现了基本接口和派生接口,则给出。
那么这里的最佳做法是什么?我的直觉是,课程应该按如下方式实施:
Public Class FooClass
Implements IFooBase, IFoo
Public Sub Bar() Implements IFooBase.Bar
End Sub
Public Sub Zim() Implements IFoo.Zim
End Sub
End Class
我的理由是,通过显式指定基接口并在定义它们的级别声明类成员,代码更清晰,如果派生接口曾经被重构,删除或替换,那么需要完成的重构是严格限制的。但是这种方法我错过了什么吗?
答案 0 :(得分:2)
通过实施IFooBase
和IFoo
,您将隐含地向任何人(其他人)审核IFoo
未从IFooBase
继承的代码,尽管即使从IFoo
继承IFooBase
也不正确。
但是,如果将IFoo
更改为也从其他接口继承,IBar
(接口可以有多个继承,但不是类),则隐式要求FooClass
也要实现IBar
,即使FooClass
不需要额外的Implements IBar
。
此外,如果你改变了基本接口,如果你的实现类明确地实现它,那么你会使事情变得更复杂,而不是隐式实现它。
我相信只有实现最派生的接口,而不是所有的父接口,才能说些什么。