如题?
多数人说不能,但我测试发现可以被private、protected、 static修饰, 不能被final修饰。
public class E
{
public static void main(String args[])
{
System.out.println("hello");
}
//用private、protected、 static修饰,都可以通过编译。不能用final修饰
//protected interface D1
//private interface D1
static interface D1
{
void x();
}
}
------解决思路----------------------
interface只能被public 修饰,不能为private或static等修饰
你这是写在类里面,你单独写个interface试试,就会提示你的
------解决思路----------------------
private、protected、 static本来就不能修饰外部类
而interface是一种特殊的public abstract class
专门用来被继承(或则叫实现吧)的
------解决思路----------------------
public class Test {
public static void main(String[] args) {
new D1() {
public void x() {
}
};
}
public void go() {
new D1() {
public void x() {
}
};
}
static interface D1 {
void x();
}
}
貌似static修饰后没有什么特别影响
------解决思路----------------------
我之前也没想过这个问题,刚才翻了下书,书上是这么写的。
The interface body can contain abstract methods, default methods, and static methods.
(接口中可以包含抽象方法,默认方法和静态方法)
All abstract, default , and static methods in an interface are implicitly public,so you can omit the modifier.
(接口中所有的抽象、默认和静态方法都隐含是public类型,你可以不写public)
也就是说你用private、protected是没有作用的。final表示不可改变肯定是不可以的
------解决思路----------------------
没有想过写内部接口的应用场景。。。
------解决思路----------------------
原来你是这个意思啊。多数人说不可以被private,protected修饰都和你这样的情况不一样的,他们应该指的是单独的一个接口不是你这样的 “内部接口”。你这样写内部接口是什么意义呢?我们平时定义的接口方式不能满足你的需求吗?虽然我不知道你这样写是否可以。但是你不管使用private或者是protected这样的访问修饰符修饰都使这个类的成员及这个接口的访问域减少