我的很多同事都混淆了这些词 - 接口实现和接口继承。这些单词之间有什么区别(在C#中)?
对我来说,根据MSDN,正确的是说"类实现接口",因此不是"类继承自接口。"
答案 0 :(得分:3)
Interface implementation
实现接口的类型(类)。样本:
public interface IOperator
{
int Operation(int a, int b);
}
public class SumOperator : IOperator
{
public int Operation(int a, int b)
{
return a + b;
}
}
public class DivisionOperator : IOperator
{
public int Operation(int a, int b)
{
return a / b;
}
}
在这种情况下,SumOperator
和DivisionOperator
是IOperator
接口的实现。
Interface inheritance
接口的结构(inheriths接口)
public interface IOperator
{
int Operation(int a, int b);
}
public interface IOppositeOperator : IOperator
{
int OppositeOperation(int a, int b);
}
public class SumOppositeOperator : IOppositeOperator
{
public int Operation(int a, int b)
{
return a + b;
}
public int OppositeOperation(int a, int b)
{
return a - b;
}
}
在这种情况下,IOpositeOperator
继承IOperator
,因此实现IOpositeOperator
的类也应该实现其结构中定义的元素(包括IOperator
,给定它继承)。它的具体类型是SumOpositeOperator
样本类。
答案 1 :(得分:0)
你是对的,我们通常认为类是实现接口,而不是继承接口;然而,这是一个相对较小的错误,每个人都理解“我的类继承了这样的界面”是什么意思。
此外,在各种场景中谈论接口继承是完全正确的,例如:
X
扩展类Y
而类Y
实现接口I
时,在这种情况下我们可以说类X
是继承接口{{ 1}}通过I
。答案 2 :(得分:0)
接口继承和接口实现不是一回事。
类实现接口,声明它实现了一个接口,然后包含实现该接口所需的成员。
接口继承是指从一个或多个其他接口继承的接口。与类继承的显着区别在于,虽然类只能直接从另一个类继承,但接口可以从多个接口继承。
在此示例中,IInterfaceC
未定义任何方法,但它包含IInterfaceA
和IInterfaceB
中定义的方法。
public interface IInterfaceA
{
void MethodA();
}
public interface IInterfaceB
{
void MethodB();
}
public interface IInterfaceC : IInterfaceA, IInterfaceB
{}
(如果你的同事使用术语"界面实现"和"界面继承"可以互换,纠正它们。他们会很感激。)