Java中的公共接口和私有接口有什么区别

时间:2013-09-24 13:21:26

标签: java

我知道Java中所有访问修饰符之间的区别。然而,有人问我一个非常有趣的问题,我很难找到答案:Java中private接口和public接口有什么区别,特别是它是怎么回事用作班级成员?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

我相信大家都知道public interface的用法,所以我在这里提到private/protected interface的要点。

Interfaces可以是类定义的成员,可以在那里声明privateprotected

public class Test {  

    private interface Sortable {  
    }  

   protected interface Searchable {  
    }  

} 

<强> Example 1: -- Source

public class PrivateInterface {  
     private interface InnerInterface {  
          void f();  
     }  

     private class InnerClass1 implements InnerInterface {  
           public void f() {   
               System.out.println("From InnerClass1");  
           }  
     }  

     private class InnerClass2 implements InnerInterface {  
           public void f() {   
               System.out.println("From InnerClass2");  
           }  
     }  

     public static void main(String[] args) {  
          PrivateInterface pi = new PrivateInterface();  
          pi.new InnerClass1().f();  
          pi.new InnerClass2().f();  
     }  
}   

/* Output: 
From InnerClass1 
From InnerClass2 
*/  
  

接口本身可以是包私有的,而不是方法   在里面。您可以定义只能使用的接口(按名称)   在它定义的包中,但它的方法是公开的   所有接口方法。如果一个类实现了该接口,那么   它定义的方法必须是公开的。这里的关键是它是   在包外不可见的接口类型,而不是   方法

答案 1 :(得分:0)

接口上的publicprivateprotected访问修饰符意味着它们在类上的含义相同。我通常会在嵌套在类中的接口上看到这些修饰符。像this这样的东西:

//: interfaces/RandomWords.java  
// Implementing an interface to conform to a method.  
package interfaces;  

public class PrivateInterface {  
  private interface InnerInterface {  
        void f();  
  }  

  private class InnerClass1 implements InnerInterface {  
         public void f() {   
             System.out.println("From InnerClass1");  
         }  
  }  

  private class InnerClass2 implements InnerInterface {  
         public void f() {   
             System.out.println("From InnerClass2");  
         }  
  }  

  public static void main(String[] args) {  
        PrivateInterface pi = new PrivateInterface();  
        pi.new InnerClass1().f();  
        pi.new InnerClass2().f();  
  }  
}  

答案 2 :(得分:0)

接口声明可能包含以下访问修饰符:

public protected private abstract static strictfp

public:如果接口类型被声明为public,则任何代码都可以访问它。

protected / private:访问修饰符protected和private仅适用于直接封闭类声明中的成员接口。 member interface是一个接口,其声明直接包含在另一个类或接口声明中。

static:访问修饰符static仅适用于成员接口,而不适用于顶级接口。

抽象:每个界面都隐式abstract。此修饰符已过时,不应该 用于新程序。

strictfp: strictfp修饰符的效果是使所有浮点或双精度表达式 在接口声明中明确FP-strict

参考:Java Language and Virtual Machine Specifications