2014-11-14 43 views
1

接口提供100%抽象它具有没有实现的方法来实现抽象行为 但在这里我有一个例子迫使我想到接口的抽象能力。具有内部类的接口可以影响接口的抽象接口 - OOP

我有接口和类里面,它有具体的方法,我可以访问该方法在另一个类中

实施例: -

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(); 
    } 
} 

具有内部类执行此接口的概念? ??或者什么是有道理的?

回答

1

JLS限定了嵌套类,如下所示:

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

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

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

1

interface中的类声明隐含地为static,所以它们是嵌套类,但不是真正的内部类,即它们的实例不涉及外部interface的实例。

所以,你有一个具体的class InnerInterFaceTest1.InnerClass其中有着怎样的名字空间关系到interface InnerInterFaceTest1,但是,没有其他后果抽象,专为您的问题,interface不因存在变得不那么抽象嵌套类。例如,如果有人创建了一个顶级课程并将其命名为InnerInterFaceTest1_InnerClass,那就没有什么不同了。

1

接口的类的实例通知的Java编译器把这个类作为接口, 所以,Java编译器的数据成员,并没有别的之前的接口方法和公共的,静态的和final关键字前加上公共的和抽象的关键词。

所以,如果在接口类中编写子类与在类中编写子类相同。

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