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

简介:
在传统的教科书或者书籍中都会灌输我们一个观念,那就是抽象类可以被继承(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中编译通过的。
通过以上实例说明接口之间是可以继承的,也就是所谓的接口扩充,这样一来继承了一个接口的类就有了两个接口的方法。
总结:接口可以继承接口,类只能实现接口。















本文转自周金桥51CTO博客,原文链接: http://blog.51cto.com/zhoufoxcn/163956 ,如需转载请自行联系原作者
相关文章
|
10月前
|
Java
JAVA 抽象类(Abstract Class) 和 接口(Interface) 的区别
对于面向对象编程来说,抽象是它的一大特征之一。在 Java 中,可以通过两种形式来体现 OOP 的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。今天我们就一起来学习一下Java中的接口和抽象类抽象类不能用于实例化对象,抽象类往往用来表示抽象概念。举个例子,中国人(Chinese 类)和美国人(American 类)都有“吃饭”这个行为,因此可以先定义一个 Person 类,然后让 Chinese 和 American 都继承这个类。但如何在父类 Person 中定义“吃饭”这个方法呢?一般
106 0
抽象类和接口(Abstract and Interface)精湛细节
抽象类和接口(Abstract and Interface)精湛细节
|
Java 开发者
抽象类(abstract class)和接口(Interface)的区别
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class)
91 0
|
前端开发 JavaScript 开发者
class-使用 extends 实现子类继承父类|学习笔记
快速学习 class-使用 extends 实现子类继承父类
112 0
【Java】抽象类(abstract)、接口(interface)
【Java】抽象类(abstract)、接口(interface)
|
Java
Java - abstract(抽象类)& interface(接口)
Java - abstract(抽象类)& interface(接口)
113 0
Java - abstract(抽象类)& interface(接口)
|
前端开发 JavaScript
class-使用extends实现子类继承父类
class-使用extends实现子类继承父类
|
JavaScript
Typescript的interface接口类型,类的继承,(private,protected,public三种访问类型)
Typescript的interface接口类型,类的继承,(private,protected,public三种访问类型)