当前位置: 代码迷 >> J2EE >> interface 可以被 private、protected、 static、 final 润色吗
  详细解决方案

interface 可以被 private、protected、 static、 final 润色吗

热度:752   发布时间:2016-04-17 22:57:25.0
interface 可以被 private、protected、 static、 final 修饰吗?
本帖最后由 seleron 于 2015-10-30 17:28:20 编辑
如题?
多数人说不能,但我测试发现可以被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表示不可改变肯定是不可以的



------解决思路----------------------
没有想过写内部接口的应用场景。。。
------解决思路----------------------
引用:
Quote: 引用:

我之前也没想过这个问题,刚才翻了下书,书上是这么写的。
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是没有作用的。”

我说的是修饰interface,而不是修饰interface中的方法
原来你是这个意思啊。多数人说不可以被private,protected修饰都和你这样的情况不一样的,他们应该指的是单独的一个接口不是你这样的 “内部接口”。你这样写内部接口是什么意义呢?我们平时定义的接口方式不能满足你的需求吗?虽然我不知道你这样写是否可以。但是你不管使用private或者是protected这样的访问修饰符修饰都使这个类的成员及这个接口的访问域减少
  相关解决方案