`
jinvasshole
  • 浏览: 769325 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

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

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

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

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

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;

namespaceDay2
{
interfaceInterfaceA
{
intAdd();
}

interfaceInterfaceB:InterfaceA
{
intMinus();
}
}

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

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

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

分享到:
评论

相关推荐

    Java面试题,他会给你很好的Java面试准备,第一,谈谈final, finally, finalize的区别,第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

    很好的Java面试题第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

    接口知识点总结

    3)接口与接口之间可以继承 如: public interface InterfaceA extends InterfaceB{} 4)类可以实现接口,一个类可以多实现接口 如: public class ClassName implements InterfaceA,InterfaceB{} 5)一个类如果实现...

    Java中抽象类和接口的区别与作用详解

    abstract class,只可以包含抽象方法,也包括一些常量的定义,丝毫不带半点实现细节,它只提供接口,可以有数据成员,默认是、同时也必须是static & final型,可以通过Interface name直接访问。Interface可以实现...

    PHP接口继承及接口多继承原理与实现方法详解

    当然接口的继承也是使用extends关键字,要多个继承的话只要用逗号把继承的接口隔开即可。 需要注意的是当你接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方法,所以类实现接口时必须实现所有相关的抽象...

    Java基础 接口.pdf

    5、接口可以继承另外一个接口,使用 extends 关键字。 6、接口与抽象类有些相似,但也有很大区别,比如接口不能包含构造器、变量和实例方法等。 Java接口的具体作用 1、接口定义了一个规范,类实现这个规范即可满足...

    PHP接口多继承及tarits实现多继承效果的方法

    当然接口的继承也是和类的继承一样使用extends关键字,要多个继承的话只要用逗号把继承的接口隔开即可。 需要注意的是当你接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方法,所以类实现接口时必须实现...

    第九课 interface接口进阶1

    interface IProgrammer extends IWork , IHobby{备注一下:假如继承的子接口中定义了与父接口中相同属性名称的类型,那么这

    as3 接口类的用法和好处

    原来,接口和抽象类相比,多出的一个优势在于(仅限Java和AS3),一个类可以实现多个接口,但是不能继承多个类。所以,如果在这里改用接口,就一切都好解决了。先定义两个接口: package{ public interface ...

    PHP接口类(interface)的定义、特点和应用示例

    上下级接口可以通过“extends”关键词继承; 接口所有方法都是“public”权限(爱E族); 接口可以定义常量成员,但不能定义变量成员; 类通过“implements”关键词来实现接口,类必须完全实现接口定义的所有...

    《java面向对象程序设计-继承和多态》教案.doc

    3-3 演示:示例 7 接口 接口就是某个事物对外提供的一些功能的申明 可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点 使用interface关键字定义接口 一般使用接口声明方法或常量,接口中的方法只能是声明,...

    freemarker模版继承

    扩充freemarker实现模版继承指令<@extends>,可以实现类似java的继承,模版现在也可以继承了,也可以实现接口.freemarker interface,freemarker extends

    PHP面向对象程序设计之接口的继承定义与用法详解

    要注意只有接口和接口之间使用 继承关键字 extends。类实现接口必须实现其抽象方法,使用实现关键字 implements。 下面的这个例子定义接口User,User有两个抽象方法 getName和setName。 又定义了接口VipUser, 继承...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    一个接口可以使用extends关键字去继承一个或多个已有的接口,但在子类的实现时,也必须全部实现所有接口的抽象方法. 一个接口去继承并实现多个接口的例子如下: view plaincopy to clipboardprint? interface A ...

    为什么Java中继承多数是有害的

    “JAVA设计模式”一书花了很大的部分讨论用interface继承代替实现继承。 好的设计者在他的代码中,大部分用interface,而不是具体的基类。本文讨论为什么设计者会这样选择,并且也介绍一些基于interface的

    JAVA面试题149例

    2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,...

    JavaSE 笔试 精华

    2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,...

    java程序员必知的

    第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?  可以继承其他类或完成其他接口,在swing编程中常用此方式。  第三,Static Nested Class ...

    Android代码-EventBus

    [DEPRECATED] 使用EventBus-Apt优化实现...public interface IMessageEvent extends IEvent{ void onReceiveMessage(String message); } 2.注册监听,实现事件接口 public MainActivity extends Activity implement

    java课程设计报告-五子棋(1).doc

    、接口的定义和实现 Interface 接口名{//抽象方法} //定义接口 Class 类名 implements 接口名称{// 类体} 实现接口 5、线程 、线程的定义 即同时执行多个程序段,每个程序段都是一个线程。 、线程的周期 线程的周期...

    java课程设计报告-五子棋.doc

    、接口的定义和实现 Interface 接口名{//抽象方法} //定义接口 Class 类名 implements 接口名称{// 类体} 实现接口 5、线程 、线程的定义 即同时执行多个程序段,每个程序段都是一个线程。 、线程的周期 线程的周期...

Global site tag (gtag.js) - Google Analytics