接口实现与接口继承 - 定义

时间:2016-05-16 19:45:42

标签: c#

我的很多同事都混淆了这些词 - 接口实现和接口继承。这些单词之间有什么区别(在C#中)?

对我来说,根据MSDN,正确的是说"类实现接口",因此不是"类继承自接口。"

3 个答案:

答案 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;
    }
}

在这种情况下,SumOperatorDivisionOperatorIOperator接口的实现。

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)

你是对的,我们通常认为类是实现接口,而不是继承接口;然而,这是一个相对较小的错误,每个人都理解“我的类继承了这样的界面”是什么意思。

此外,在各种场景中谈论接口继承是完全正确的,例如:

  1. 当接口扩展一个或多个其他接口时,我们说接口继承自这些接口。
  2. 当类X扩展类Y而类Y实现接口I时,在这种情况下我们可以说类X是继承接口{{ 1}}通过I
  3. 当抽象类“实现”接口而不为接口的任何方法提供任何实现时。 (这是完全有效的,因为它是一个抽象类。)在这种情况下,说它实现接口是不正确的,因为它不是真的。

答案 2 :(得分:0)

接口继承和接口实现不是一回事。

实现接口,声明它实现了一个接口,然后包含实现该接口所需的成员。

接口继承是指从一个或多个其他接口继承的接口。与类继承的显着区别在于,虽然类只能直接从另一个类继承,但接口可以从多个接口继承。

在此示例中,IInterfaceC未定义任何方法,但它包含IInterfaceAIInterfaceB中定义的方法。

public interface IInterfaceA
{
    void MethodA();
}

public interface IInterfaceB
{
    void MethodB();
}

public interface IInterfaceC : IInterfaceA, IInterfaceB
{}

(如果你的同事使用术语"界面实现"和"界面继承"可以互换,纠正它们。他们会很感激。)