我知道Java中所有访问修饰符之间的区别。然而,有人问我一个非常有趣的问题,我很难找到答案:Java中private
接口和public
接口有什么区别,特别是它是怎么回事用作班级成员?任何帮助将不胜感激。
答案 0 :(得分:2)
我相信大家都知道public interface
的用法,所以我在这里提到private/protected interface
的要点。
Interfaces
可以是类定义的成员,可以在那里声明private
或protected
。
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)
接口上的public
,private
和protected
访问修饰符意味着它们在类上的含义相同。我通常会在嵌套在类中的接口上看到这些修饰符。像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。