在看API文档时,突然发现一个接口可以是其他接口的子接口,这说明接口之间会存在继承的关系。查找了相关的资料,做一个总结。

是继承还是实现

首先要搞清楚接口之间的关系使用的关键字是extends还是implement。网友有如下回答:

一个类只能extends一个父类,但可以implements多个接口。java通过使用接口的概念来取代C++中多继承。与此同时,一个接口则可以同时extends多个接口,却不能implements任何接口。因而,Java中的接口是支持多继承的。

自己动手验证了一下:

首先在eclipse中创建interface时,弹出选项窗口中会有一个选项:

可以看到eclipse中也明确提示可以使用extends关键字继承上层接口

再看测试代码清单:

Interface1:

  1. public interface Interface1 {
  2. public void method1();
  3. }

Interface2:


看到接口之间的关系使用implements关键字时会报错,错误提示信息如下:

  1. Syntax error on token "implements", extends expected

eclipse明确指出,接口之间是继承关系,而非实现关系。

修改为extends时代码正确:

  1. public interface Interface2 extends Interface1{
  2. public int a = 1;
  3. public void method2();
  4. }

前面网友又提到java接口是可以支持多继承的。做了一下实验:

代码清单:

  1. //interface3
  2. <pre name="code" class="java">public interface Interface3 {
  3. public void method3();
  4. }

//interface4

  1. <pre name="code" class="java">public interface Interface4 extends Interface1, Interface3 {
  2. public void method4();
  3. }

实现类A:

  1. public class A implements Interface4 {
  2. public static void main(String[] args) {
  3. }
  4. @Override
  5. public void method1() {
  6. // TODO Auto-generated method stub
  7. System.out.println("method1");
  8. }
  9. @Override
  10. public void method3() {
  11. // TODO Auto-generated method stub
  12. System.out.println("method2");
  13. }
  14. @Override
  15. public void method4() {
  16. // TODO Auto-generated method stub
  17. System.out.println("method3");
  18. }
  19. }

Main主类:

  1. public class Main {
  2. public static void main(String[] args) {
  3. // TODO Auto-generated method stub
  4. A a = new A();
  5. a.method1();
  6. a.method3();
  7. a.method4();
  8. }
  9. }

输出结果:

  1. method1
  2. method2
  3. method3

说明java接口的继承是多继承的机制。

Java:接口继承接口 (多继承机制)的更多相关文章

  1. Java基础10 接口的继承与抽象类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com ...

  2. 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?

    接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问:  抽象类是否可继承实体类 (concrete class) 答: 抽象类是 ...

  3. java类为什么是单继承。类的继承,实现接口。

    java中提供类与类之间提供单继承. 提供多继承会可能出现错误,如:一个类继承了两个父类,而两个父类里面都有show()方法. class Fulei1{ public void show(){ Sy ...

  4. JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)

    实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...

  5. [Java] 类和接口的初始化步骤 - 继承方面

    类和接口在初始化化时,处理继承层级的方法不一样. 类继承的初始化:通过引用 static 字段,触发某个类的初始化,则声明该字段的类,以及该类的父类被初始化. 接口继承的初始化:通过引用 static ...

  6. java 面对对象(抽象 继承 接口 多态)

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...

  7. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  8. 第五节:详细讲解Java中的接口与继承

    前言 大家好,给大家带来详细讲解Java中的接口与继承的概述,希望你们喜欢 什么是接口(interface) 接口中的方法都是抽象方法,public权限,全是抽象函数,不能生成对象 interface ...

  9. Java基础10 接口的继承与抽象类(转载)

    接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface:  interface Cup{ ...

随机推荐

  1. 移动端 canvas插入多张图片生成一张可保存到手机图片

    第一次写随笔,想把开发中遇到的问题与大家分享,可能会让您少走一步弯路. 先看下效果图: 代码分三部分为大家展示: 1.html 部分 <div id="myQrcontainer&qu ...

  2. macvlan 网络隔离和连通 - 每天5分钟玩转 Docker 容器技术(57)

    上一节我们创建了两个 macvlan 并部署了容器,网络结构如下: 本节验证 macvlan 之间的连通性. bbox1 能 ping 通 bbox3,bbox2 能 ping 通 bbox4.即:同 ...

  3. JQuery中的回调对象

    JQuery中的回调对象 回调对象(Callbacks object)模块是JQuery中的一个很基础的模块,很多其他的模块(比如Deferred.Ajax等)都依赖于Callbacks模块的实现.本 ...

  4. MySQL用户管理:添加用户、授权、删除用户

    文章首发于[博客园-陈树义],请尊重原创保留原文链接. 添加用户 以root用户登录数据库,运行以下命令: create user zhangsan identified by 'zhangsan'; ...

  5. SLF4J源码解析-LoggerFactory(二)

    承接前文SLF4J源码解析-LoggerFactory(一),本文则主要针对获取ILoggerFactory对象作下简单的分析 LoggerFactory#getILoggerFactory() 源码 ...

  6. MySql_5-7安装教程

    MySql_5-7安装教程... --------------------------------- 安装过成参考的文档: 参考网址:http://jingyan.baidu.com/article/ ...

  7. 常用路径 URL 中的斜杠与反斜杠

    常用路径中的斜杠与反斜杠... ------------------------------ 斜杠:反斜杠:======================电脑能识别的斜杠有两种:斜杠分正斜杠(forwa ...

  8. 最新spring官网(spring.io)下载方法

    这里介绍的是用于WEB开发的spring-frame框架的下载方法. 如果想下载其他的spring产品,直接进入http://projects.spring.io,选择自己要的即可.下载方法同下. 要 ...

  9. 数据结构-环形队列 C和C++的实现

    队列: 含义:是一种先入先出(FIFO)的数据结构. 当我们把数据一个一个放入队列中.当我们需要用到这些数据时,每次都从队列的头部取出第一个数据进行处理.就像排队进场一样,先排队的人先进场. 结构如下 ...

  10. Servlet使用简介

    Servlet的使用基本包含三个步骤: 1.继承HttpServlet 或实现Servlet 接口 (根据源码分析最终都是对servlet接口的实现) 2.配置地址: 配置web.xml 或者用注解的 ...