在Java语言中,接口可以嵌套在类或其它接口中。由于Java中interface内是不可以嵌套class的,所以接口的嵌套就共有两种方式:class嵌套interface、interface嵌套interface。

1. class嵌套interface

这时接口可以是public,private和package的。重点在private上,被定义为私有的接口只能在接口所在的类被实现。可以被实现为public的类也可以被实现为private的类。当被实现为public时,只能在被自身所在的类内部使用。只能够实现接口中的方法,在外部不能像正常类那样上传为接口类型。

2. interface嵌套interface

由于接口的元素必须是public的,所以被嵌套的接口自动就是public的,而不能定义成private的。在实现这种嵌套时,不必实现被嵌套的接口。

程序示例(摘抄改编自《Thinking in Java》):

classA {privateinterfaceD {voidf();

}privateclassDImpimplementsD {publicvoidf() {}

}publicclassDImp2implementsD {publicvoidf() {}

}publicD getD() {returnnewDImp2(); }privateD dRef;publicvoidreceiveD(D d) {

dRef=d;

dRef.f();

}

}publicclassNestingInterfaces {publicstaticvoidmain(String[] args) {

A a=newA();//The type A.D is not visible//! A.D ad = a.getD();//Cannot convert from A.D to A.DImp2//! A.DImp2 di2 = a.getD();//The type A.D is not visible//! a.getD().f();A a2=newA();

a2.receiveD(a.getD());

}

}

其中语句A.D ad = a.getD()和a.getD().f()的编译错误是因为D是A的私有接口,不能在外部被访问。语句A.DImp2 di2 = a.getD()的错误是因为getD方法的返回类型为D,不能自动向下转型为DImp2类型。

java 接口嵌套接口_Java接口嵌套相关推荐

  1. java抽象和接口的理解_Java接口实现与抽象类的区别理解 | 彬菌

    版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 接口:接口是抽象方法的集合.接口通常以interface来声明. 接口注意事项: 1.严格来说,接口是用来实现(i ...

  2. Java私有方法解释_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  3. java什么是网络接口_java接口和类的区别是什么?它们都有哪些作用呢?

    由于新兴技术的发展,java不断地被更多人应用,而其中java接口和java类的区别主要是哪些,在哪些方面作用显著?这是困扰许多人的问题,那么,让我们继续看一下这两者的区别和作用吧? 在java中,对 ...

  4. java nio的演进_Java接口的防御性API演进

    java nio的演进 API的发展绝对是不平凡的. 只有少数几个需要处理的事情. 我们大多数人每天都在使用内部专有API. 现代IDE附带了很棒的工具,可以分解,重命名,上拉,下推,间接,委托,推断 ...

  5. java接口编程题_Java接口练习题

    1.说出下面程序的执行结果: interface InterfaceA { String S = "good "; void f(); } abstract class Class ...

  6. java接口的关键字_Java 接口 interface关键字

    1.概念:一种特殊的类,有全局常量和公共方法组成 定义接口用interface关键字 2.语法: //中括号"[ ]"的含义:你可继承父接口,也可不继承,是可选的 [修饰符] (a ...

  7. java抽象类接口举例代码_Java接口和抽象类实例分析

    本文实例讲述了Java的接口和抽象类.分享给大家供大家参考.具体分析如下: 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相 ...

  8. java接口和抽象类_Java接口和抽象类的区别

    类是对象的模板,抽象类和接口可以看做是具体的类的模板. 由于从某种角度讲,接口是一种特殊的抽象类,它们的渊源颇深,有很大的相似之处,所以在选择使用谁的问题上很容易迷糊.我们首先分析它们具有的相同点. ...

  9. java接口方法实现_Java接口的简单定义与实现方法示例

    本文实例讲述了Java接口的简单定义与实现方法.分享给大家供大家参考,具体如下: 1.接口是Java中最终要的概念,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成. 2.接口的 ...

  10. java接口是静态_Java接口(静态方法、私有方法)

    静态方法的使用 静态和对象不要紧,只和类有关系.java 接口中的私有方法code package cn.itcast.day10.demo01; /* 从Java 8开始,接口当中容许定义静态方法. ...

最新文章

  1. 微信公众平台入门开发教程.Net(C#)框架
  2. 2017-2018-2点集拓扑
  3. linux 协议栈 位置,[置顶] Linux协议栈代码阅读笔记(一)
  4. 后端:死磕18个Java8日期处理,工作必用!
  5. es6 语法 (Decorator)
  6. Leetcode刷题(4)罗马数字转整数
  7. bufg和bufgp_如何将自己写的verilog模块封装成IP核(一)
  8. 服务器Ubuntu Import Error:cannot import name main
  9. emmet语法 1127
  10. SpringBoot中使用Mybatis-plus整合PageHelper分页插件踩坑
  11. 论文阅读笔记(一)——DESCENDING THROUGH A CROWDED VALLEY—BENCHMARKING DEEP LEARNING OPTIMIZERS
  12. EnglishWords——星期与月份
  13. wangEditor 全屏 预览 查看源码
  14. unity序列帧优化—Addressables
  15. candence的图纸大小设置_关于无法修改图纸大小的问题
  16. Linux内核中网络数据的传输
  17. 微软数据分析服务 - Microsoft Clarity
  18. 从联邦学习角度聊人工智能隐私
  19. VSCode C++环境配置及测试运行
  20. 7-15 计算圆周率

热门文章

  1. windows分辨率修改工具_3个修改图片DPI的方法
  2. Halcon图像预处理与形态学(图像的滤波)
  3. Struts2入门这一篇就够了 1
  4. 整理Java基础知识--Date Time2
  5. Saltstack远程执行命令(3)
  6. 201412-1-门禁系统
  7. CSS兼容性解决方法!important的IE7,Firefox问题
  8. 一段C#学习代码(实现通过积分的几何意义计算积分)
  9. matlab求系统根轨迹和系统增益,控制系统的根轨迹分析
  10. java的cxf的maven_Maven+Spirng+Mybatis+CXF搭建WebService服务