类是继承接口还是实现接口?

时间:2019-02-13 09:58:32

标签: c# inheritance interface

由于C#对继承和实现使用相同的语法,即“:”。我们是说一个类实现一个接口还是继承一个接口?类可以从接口继承任何东西吗?

4 个答案:

答案 0 :(得分:1)

接口没有要继承 *的东西,因此类将实现接口。

*这在C#版本8中将稍有变化,我们将获得default interface implementation,但出于理智的考虑,我想我们仍然会使用“实现”而不是“继承”

答案 1 :(得分:1)

类不能从接口继承,因为接口在定义上为空:它仅指示某些成员的强制实现。

来自MSDN about interfaces

  

“一个接口包含一组定义   类或结构可以实现的相关功能。”

例如:

interface IWritable {
    void Write();
}

上面的代码仅确定需要在实现该类的所有类中拥有一个Write()方法。

现在 tricky 部分。您可以将接口视为纯抽象类,即,它仅定义方法而没有实现。在其他编程语言(例如C ++)(顺便支持多重继承,因此无需“区分”任何区别)中,这些类是继承的。此外,您可以为这些方法甚至常量定义默认实现。实际上,这也将在C#中被允许。

因此,随着我们对实现方式和将来提供的功能的思考越来越多,划分“实现”和“扩展”或“继承”的界限变得模糊。

但是,在设计方面,它绝对是一种实现。

进一步阅读MSDN: interfaces reference

答案 2 :(得分:0)

类可以实现多个接口,并且一个类一次只能继承一个以上的类。

答案 3 :(得分:0)

类始终实现接口,并且从不继承任何接口,但是接口可以继承其他接口。

让我们看下面的示例,在这里我分别定义了两个接口 ISum IMinus

接口的继承:ISum在IMinus中继承。

接口的实现:IMinus在FooClass中实现。

public interface ISum
{
    int Sum(int a, int b);
}

public interface IMinus : ISum
{
    int Minus(int a, int b);
}

public class FooClass: IMinus
{
    public int Sum(int a, int b)
    {
        return a + b;
    }

    public int Minus(int a, int b)
    {
        return a - b;
    }
}