###一、接口
##1. 接口简介

接口: 是java的一种抽象类型,是抽象方法的集合。接口比抽象类更加抽象的抽象类型。

接口语法

[修饰符] [abstract] interface 接口名 [extends 父接口名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
[public] [static] 方法{};//JDK1.8后
[public] [static] 类/接口;
}

##2. 接口成员的修饰符

接口中的所有成员的访问权限默认强制是 public

  • 变量: 默认强制是public static final
  • 方法: 默认强制是public abstract,即抽象方法。但JDK1.8后,允许定义静态方法public static,接口存在非抽象方法;
  • 内部类/接口: 默认强制是 public static

下面例子中的接口中定义了各种接口成员:

public interface InterfaceTest {int a = 10;//全局变量默认强制是 public static finalpublic static void staticMethod() {  //静态方法,JDK1.8下编译通过System.out.println("");}int abstractMethod(); //抽象方法public static abstract class InnerClass{//抽象内部类,默认强制 public static//......}enum MyEnum{RED,BLUE,GRREN} //枚举类,默认强制 public staticinterface InnerInteerface{ //嵌套接口,默认强制 public staticvoid aa();}
}class MyClass implements InterfaceTest{//实现上面的接口@Overridepublic int abstractMethod() {//实现抽象方法return 0;}
}

注意一下,实现接口并不需要实现接口里面的内部抽象类成员、或者嵌套接口成员;
##3. 接口的多继承

接口是可以继承多个接口(在类中,是不允许多继承的)。由于接口的实例成员方法都是抽象方法,所以多继承不会对接口造成太大影响(不同父接口可以定义相同的方法),但还是有一点要注意的,**多继承接口时,从父接口继承下来的方法,有相同的方法名,但不满足方法重载的条件,就会冲突。**如果出现这种情况,编译将失败,不允许多继承。

interface A{void sameMethodA();
}interface B{void sameMethodA();void sameMethodB(int a);//返回类型是void
}interface C{int sameMethodB(int a);//返回类型是 int
}interface D extends A,B{ //编译通过,即使A,B定义了相同方法}interface E extends B,C{//编译失败}

字接口D多继承父接口A,B成功,但子接口E却多继承父接口B,C失败,就是因为两个接口定义的sameMethodB()除了返回类型外,方法名、参数列表都一样,这不满足方法重载,导致继承时方法冲突。

如果非得要多继承,Java的解决方案是使用 内部类或嵌套接口;
##4. 接口与抽象类的区别

接口与抽象类的区别:

  • 抽象级别不一样: 接口更加抽象,JDK1.8前只允许抽象方法,JDK1,8后才允许存在静态方法;抽象类的抽象基本低,允许存在具体方法,甚至抽象类中可以没有抽象方法。但有抽象方法的类就必须是抽象类;
  • 接口对成员的定义时的修饰符都有固定的限制,参考前面;抽象类定义成员与普通类是一样的;
  • 接口中不允许定义初始化块(静态或实例),但抽象类允许定义这两种初始化块;
  • 接口中不能定义构造方法,但抽象类允许定义构造方法。

补充:抽象类中的抽象方法的访问权限是不能是private
###二、嵌套接口

嵌套接口: 就是定义在类或接口中的接口。

嵌套接口的修饰符限制:

  • 不论定义在接口,还是类中,嵌套接口默认强制是 static。这意味着,嵌套接口是没有局部的嵌套接口。
  • 接口定义在类中,可以使用四种访问权限,定义在接口种,则只有public

作者:jinggod
出处:http://www.cnblogs.com/jinggod/p/8503146.html

类与接口(三)java中的接口与嵌套接口相关推荐

  1. Java开发知识之Java中的集合上List接口以及子类讲解.

    Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...

  2. Java中的冒泡排序,Comparator接口和Comparable接口的简单使用

    冒泡排序 冒泡排序是一种常见的排序方法,按照一定的规则(比如从小到大或者从大到小的顺序)对一组数据进行排序.而在Java开发中,也经常用到冒泡排序.我们就以下面的一个例子来讲解冒泡排序算法. 给定一个 ...

  3. 并发王者课-铂金1:探本溯源-为何说Lock接口是Java中锁的基础

    欢迎来到<并发王者课>,本文是该系列文章中的第14篇. 在黄金系列中,我们介绍了并发中一些问题,比如死锁.活锁.线程饥饿等问题.在并发编程中,这些问题无疑都是需要解决的.所以,在铂金系列文 ...

  4. 铂金1:探本溯源-为何说Lock接口是Java中锁的基础

    欢迎来到<并发王者课>,本文是该系列文章中的第14篇. 在黄金系列中,我们介绍了并发中一些问题,比如死锁.活锁.线程饥饿等问题.在并发编程中,这些问题无疑都是需要解决的.所以,在铂金系列文 ...

  5. JAVA中parameterized,Java中与泛型相关的接口 之 ParameterizedType

    在阅读本文之前可以先阅读以下三篇,以便对Java中的泛型有一个全局的认识: 简介 ParameterizedType是Type的子接口,表示一个有参数的类型,例如Collection,Map等.但实现 ...

  6. java中io流实现哪个接口_第55节:Java当中的IO流-时间api(下)-上

    标题图 Java当中的IO流(下)-上日期和时间日期类:java.util.Date 系统时间:long time = System.currentTimeMillis();public class  ...

  7. Android+Java中使用RSA加密实现接口调用时的校验功能

    场景 RSA加密 RSA算法是一种非对称加密算法,那么何为非对称加密算法呢? 一般我们理解上的加密是这样子进行的:原文经过了一把钥匙(密钥)加密后变成了密文,然后将密文传递给接收方,接收方再用这把钥匙 ...

  8. java自定义外部接口_如何使用可外部化的接口在Java中自定义序列化

    java自定义外部接口 在上一篇文章"用示例介绍的有关Java序列化的一切"中 ,我解释了如何使用以下方法序列化/反序列化一个对象 Serializable接口,还说明了如何使用w ...

  9. 如何使用可外部化的接口在Java中自定义序列化

    在上一篇文章"用示例介绍的有关Java序列化的一切"中 ,我解释了如何使用以下方法序列化/反序列化一个对象 Serializable接口,还说明了如何使用writeObject和r ...

  10. java type 类型,java中的泛型类型与Type接口

    假设我们定义了一个Room的类,表示一个房间 public classRoom(){ } 由于我们建造好房间是,不知道房间以后的用途,他可能用来住人,也有可能用来放货物,因此需要用到泛型.但是我们可能 ...

最新文章

  1. 谈协同软件实施特点与过程
  2. 【数字信号处理】相关系数 ( 相关系数概念解析 | 信号能量常数 | 共轭序列 | 序列在相同时刻的相关性 )
  3. Python 爬虫面试题 102 道
  4. 解决linux yum无法安装mysql
  5. android byte转string_唠点儿你不一定知道的Android小知识
  6. while循环(包含死循环、while嵌套)
  7. linux 定时任务 crond 服务介绍
  8. 软件测试第三次作业junit和Eclemma的使用
  9. Spring集成quartz实现的定时任务调用
  10. BeanNotOfRequiredTypeException,Bean named ‘xx‘ is excepted to be of type ‘xx‘ but was ‘$Proxy30 ‘
  11. 服务器系统迁移方案,服务器与应用系统迁移方案.doc
  12. 谷歌Chrome 操作系统基于浏览器的OS
  13. 综合案例-快报模块列表制作
  14. 小三上位中的数学问题
  15. 拼多多下单助手怎么一键采购、发货的?
  16. 挣值管理名词(EV、AC、PV等)与公式详解
  17. r语言中,如何将分类变量化为虚拟变量
  18. UINO优诺:数字孪生可视化管理GIV,打造统览全局大视野
  19. 爬虫学习(一)---爬取电影天堂下载链接
  20. 内网渗透-域横向smbwmin明文hash传递

热门文章

  1. 设计模式总结之Builder Pattern(建造者模式)
  2. Qt中定时器使用的两种方法
  3. C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板成员函数的实例化
  4. (chap2 简单的Http协议) HTTP性能优化之管线化pipelining
  5. 初等数论--整除--欧几里得算法/辗转相除法/更相减损术
  6. 2022-03-09
  7. Docker安装及基本使用
  8. WebsocketWebSSH
  9. Apache Log4j2 RCE 命令执行漏洞预警及修复方案
  10. 某平台的一次简单渗透测试记录