我们在实际开发过程中,如果想要创建某些公共代码,使得它们可以被某个接口的所有不同实现所共用,那么接口内部的嵌套类会显得很方便。也就是说,在接口中可以含有内部 类,实现类可以根据各自的需求进行有针对性的复用和调整。
在这里,将结合案例分别展示接口中放置普通成员内部类和抽象成员内部类的特点及应用。
譬如下例所示:
定义接口IOuterInterface,其中分别定义了常量TEMP、抽象方法abMethod、默认方法deMethod、静态方法stMethod、普通成员内部类InnerClass和抽象成员内部类AbInnerClass(如图1)。
(图1)
当类实现该接口时,如需设置为非抽象类,则只需实现接口中抽象方法abMethod即可,譬如:
- 创建非抽象类ClassDemo实现IOuterInterface。此时,类中需实现接口中的抽象方法abMethod,但并不需刻意继承接口内的普通成员内部类及抽象成员内部类。为方便后面实例获取,在ClassDemo中设置获取普通成员内部的方法getInner,(图2)。
(图2)
定义测试类Test,在main方法中通过三种方案,分别获取IOuterInterface接口中定义的普通内部类对象并调用其show方法(如图3)。
(图3)
运行结果(如图4):
(图4)
- 创建非抽象类 AbClassDemo 实现 IOuterInterface。此时,类中除实现接口中的抽象方法abMethod外,通过内部类AbDemo继承抽象类AbInnerClass,并实现其抽象方法abInfo(如图5)
(图5)
定义测试类TestOne,在main方法中通过两种方案,分别获取抽象内部类对象并调用其方法(如图6)。
(图6)
运行结果(图7):
(图7)