接口具有内部类可以影响接口的抽象 - OOP

时间:2014-11-14 10:43:51

标签: java oop interface inner-classes

接口提供100%抽象,它具有不实现抽象行为的实现方法 但在这里我有一个例子,它迫使我想到接口的抽象能力。

我在其中有接口和类,它有具体的方法,我可以在另一个类

中访问该方法

示例: -

interface InnerInterFaceTest1 {
     class InnerClass {
        public  void doWork() {
            System.out.println("in interface innner class");
        }
    }
}
public class InnerInterFaceTest implements InnerInterFaceTest1 {
    public static void main(String... a) {
        InnerInterFaceTest1.InnerClass class1 = new InnerInterFaceTest1.InnerClass() ;
        class1.doWork();
    }
}

具有内部类的接口的概念是做这个???还是有意义的?

4 个答案:

答案 0 :(得分:1)

JLS定义了一个嵌套类,如下所示:

  

嵌套类是任何类,其声明发生在另一个类或接口的主体内。

请注意,接口中声明的嵌套类隐式publicstatic

所以这实际上不是一个内部类,而是更多的顶级类,它打包或嵌套在另一个顶级类型中。

答案 1 :(得分:1)

interface中的类声明隐式static,因此它们是嵌套类,但不是真正的内部类,即它们的实例没有引用外部interface的实例。

所以你有一个具体的class InnerInterFaceTest1.InnerClassinterface InnerInterFaceTest1有一种名称空间关系,但是,抽象没有其他后果,特别是对你的问题,{{1}由于该嵌套类的存在,它不会变得不那么抽象。例如,如果有人创建了一个顶级类并将其命名为interface,那就没有什么不同了。

答案 2 :(得分:1)

接口类通知java编译器将此类视为接口, 因此,java编译器在接口方法之前添加公共和抽象关键字,在数据成员之前添加public,static和final关键字,而不是其他任何内容。

因此,如果在接口类中编写子类与在类中编写子类相同。

根据这个理论,你可以为子类做每个进程,你可以为普通类做。

答案 3 :(得分:0)

这种情况并不常见,但有时你需要指定在你的界面中使用的结构,这些类可以有例如一致性原语。查看示例 https://stackoverflow.com/a/10481539/4054054