现在的位置: 首页 > 综合 > 正文

接口(interface)原来是可以被继承(extends)的

2013年09月01日 ⁄ 综合 ⁄ 共 718字 ⁄ 字号 评论关闭

在传统的教科书或者书籍中都会灌输我们一个观念,那就是抽象类可以被继承(extends),接口可以被实现(implements),但是抽象类不能被实现(implements),接口也不能被继承(extends),但是今天这个观点有些地方被颠覆了。

抽象类可以被继承(extends),接口可以被实现(implements),但是抽象类不能被实现(implements),这三个观点确实没有什么问题,但是接口却是可以被继承的,当然你也许会举一个类似下面的例子来证明接口是不能被继承的,代码如下:

确实上面的代码不能被编译通过,会出现以下错误:

也许你就想以上面的例子来证明我的观点是错误的,但是请看下面的例子:

看看图中高亮部分代码,它是可以通过编译的,下面的编译结果:

另外在C#中我也做过测试,因为在C#中实现和继承没办法从类似于java的implements或者extends关键字看出来,它都是用:符号来体现的,不过看具体代码还是可以看出来的,请看下面一段代码:

using System;
using System.Collections.Generic;
using System.Text;

namespace Day2
{
    
interface InterfaceA
    {
        
int Add();
    }

    interface InterfaceB : InterfaceA
    {
        
int Minus();
    }
}

这段代码是可以在VS中编译通过的。

通过以上实例说明接口之间是可以继承的,也就是所谓的接口扩充,这样一来继承了一个接口的类就有了两个接口的方法。

总结:接口可以继承接口,类只能实现接口。

【上篇】
【下篇】

抱歉!评论已关闭.