Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中公共接口和私有接口的区别是什么_Java - Fatal编程技术网

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

Java中公共接口和私有接口的区别是什么,java,Java,我知道Java中所有访问修饰符之间的区别。然而,有人问了我一个非常有趣的问题,我很难找到答案:Java中的私有接口和公共接口有什么区别,特别是如何将其用作类成员?任何帮助都将不胜感激。我相信我们都知道公共接口的用法,所以我想在这里提到私有/受保护接口的要点 接口可以是类定义的成员,并且可以在那里声明为私有或受保护 public class Test { private interface Sortable { } protected interface Se

我知道Java中所有访问修饰符之间的区别。然而,有人问了我一个非常有趣的问题,我很难找到答案:Java中的
私有
接口和
公共
接口有什么区别,特别是如何将其用作类成员?任何帮助都将不胜感激。

我相信我们都知道
公共接口的用法,所以我想在这里提到
私有/受保护接口的要点

接口
可以是类定义的成员,并且可以在那里声明为
私有
受保护

public class Test {  

    private interface Sortable {  
    }  

   protected interface Searchable {  
    }  

} 

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 
*/  
接口本身可以是包私有的,而不是方法 在里面。您可以定义只能使用的接口(按名称) 在包中定义了它,但它的方法与 所有接口方法。如果类实现了该接口,则 它定义的方法必须是公共的。这里的关键是它是 在包外部不可见的接口类型,而不是 方法


接口上的
public
private
protected
访问修饰符的含义与类上的含义相同。我通常会在嵌套在类中的接口上看到这些修饰符。比如:


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

public protected private abstract static strictfp
public:如果接口类型声明为public,则任何代码都可以访问它

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

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

抽象:每个接口都是隐式的
abstract
。此修饰符已过时,不应使用 可以在新程序中使用

strictfp:修饰符的作用是使所有浮点表达式或双精度表达式 在接口声明中,可以显式地使用


Ref:

这类似于
私有
公共
类之间的区别。类似是什么意思?我每天都学新东西。不能说我曾经想过把
接口作为类成员。
public protected private abstract static strictfp