java中在类的内部定义接口有什么好处?

天道酬勤170946349

我始终认为把一个编程问题搞复杂了比较容易,把一个编程问题讲的简单明了是比较困难的事情。而Java中的内部接口就是一个这样的问题,用的不多,但是某些情况下还有使用场景。

在描述内部接口的应用之前,先说明一件事情,那就是开发中不使用内部接口是完全可以的。甚至很多公司是不允许使用内部接口的,这种做法虽然有些极端但是也是保证代码质量的一种颇为有效的方式。

要理解Java类中定义的内部接口有什么实际价值,要从三个角度来理解:首先要清楚内部类定义的初衷,其次要清楚接口的作用,最后再看内部接口能解决什么问题。

我们先来看一下内部类在java中的定义:

要描述内部接口首先要描述内部类,因为这两个概念是分不开的。关于内部类,Java的定义中清楚的指明了为了逻辑整合,什么是逻辑整合呢?简单的理解就是一组逻辑耦合度非常高的类,最常见的应用就是图形界面和其对应的事件处理。还有一点,就是内部类的可复用性较小,使用范围严重依赖于固定场景。

那么内部接口的定义是什么呢?Java中关于内部接口的定义只有一句话:An inner class can act as an interface implemented by another inner class。这句话的定义清晰明了的指明了内部接口是服务于内部类的。看一个例子:

可以说内部接口与内部类在定义之初就是为了提高程序的高度封装而设计的,而内部接口则是为了给内部类提供服务的,除了可以定义内部接口还可以定义内部抽象类,此时还可以定义另外一个内部实体类实现此内部抽象类,看一个例子:

这个例子只是在内部接口的例子基础上稍加改动,这个例子的目的不仅仅是为了阐述内部抽象类的定义,更为了佐证内部接口的作用。因为我们通常把接口理解为全抽象,把抽象类理解为半抽象。

当然,内部接口与内部类还是有一个根本上的区别:类是实现,接口是标准。如果把接口限制在一个固定的范围内使用未免有点大材小用了,所以内部接口天然具备static属性,是可以在外部直接使用的,看一个例子:

这个例子的使用在效果上依然体现在高度封装上,简单的说就是通过一个专属的接口完成抽象(Education)和实现类(MiddleSchool、HighSchool)的连接。


IT人刘俊明

1. 从作用上来讲:

类的内部接口和外部接口,都是启到接口的作用,接口就是来定义规范。

2. 内部定义接口的好处:

1)具体可以理解成一个类中进一步的逻辑细分, 比如JDK接口Map中的内部接口Entry;

代码如下:

2)可以增强代码的易读性和可维护性;

3. 从定义的出发点来讲:

我感觉内部接口更多的是针对类的内部使用,但是,在类的外部一般是说对外的公有接口,可以为更多的服务提供接口功能。

现将已经发布部分文章罗列一部分:

Java:线程并发问题、基于代码实战的4种锁机制及多线程协作编程

Java网络编程:TCP和UDP通信模型详解及基于代码实战的通信编程

Servlet:多个过滤器并存及代码实战、web.xml的7种典型节点配置

京东和腾讯精选12道Java笔试题并有答案

精选11道Java技术面试题并有答案(包含部分阿里和华为的面试题)


互联网IT信息

内部接口也称为嵌套接口,即在一个接口内部定义另一个接口。举个例子,Entry接口定义在Map接口里面,如下代码:
public interface Map {
interface Entry{
int getKey();\n
}
void clear();
}
使用内部接口的原因:
  • 一种对那些在同一个地方使用的接口进行逻辑上分组;
  • 封装思想的体现;
  • 嵌套接口可以增强代码的易读性和可维护性;
在Java标准库中使用内部接口的一个例子是java.util.Map和Java.util.Map.Entry。这里java.util.Map同样被当成命名空间使用。Entry并不属于全局作用域范围.


分享到:


相關文章: