【发布时间】:2016-09-12 17:20:22
【问题描述】:
很多同事把这些词混为一谈——接口实现和接口继承。这些词之间有什么区别(在 C# 中)?
对我来说,根据 MSDN,正确的说法是“类实现接口”,因此不是“类从接口继承”。
【问题讨论】:
-
实现非常简单:它实现了。接口可以继承,但不能实现。因此这不是一回事
-
继承通常会让你更富有。接口继承让你更穷。你继承了实现接口的需要。
标签: c#
很多同事把这些词混为一谈——接口实现和接口继承。这些词之间有什么区别(在 C# 中)?
对我来说,根据 MSDN,正确的说法是“类实现接口”,因此不是“类从接口继承”。
【问题讨论】:
标签: c#
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接口的结构(继承接口)
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 示例类。
【讨论】:
你说得对,我们一般认为类是实现接口,而不是继承接口;但是,这是一个相对较小的错误,每个人都明白“我的类继承某某接口”是什么意思。
另外,在各种场景中说接口继承是完全正确的,例如:
X类扩展Y类且Y实现接口I时,我们可以说X类通过Y继承接口I。【讨论】:
接口继承和接口实现不是一回事。
一个类实现一个接口,声明它实现了一个接口,然后包含实现该接口所需的成员。
接口继承是指从一个或多个其他接口继承的接口。与类继承的一个显着区别是,一个类只能直接从另一个类继承,而一个接口可以从多个接口继承。
在本例中,IInterfaceC 没有定义自己的任何方法,但它包含了IInterfaceA 和IInterfaceB 中定义的方法。
public interface IInterfaceA
{
void MethodA();
}
public interface IInterfaceB
{
void MethodB();
}
public interface IInterfaceC : IInterfaceA, IInterfaceB
{}
(如果您的同事交替使用术语“接口实现”和“接口继承”,请更正它们。他们会很感激的。)
【讨论】: