package object; class a {
//嵌套在类中的接口,可以被private,protected,default和public四种权限修饰 interface b { void f(); } public class bimp implements b { public void f() {} } private class bimp2 implements b { public void f() {} } public interface c { void f(); } class cimp implements c { public void f() {} } private class cimp2 implements c { public void f() {} }
//私有的嵌套接口,对外不可见,且只能被当前类中的其他内部类所实现 private interface d { void f(); } private class dimp implements d { public void f() {} } public class dimp2 implements d { public void f() {} } public d getd() { return new dimp2(); } private d dref; public void received(d d) { dref = d; dref.f(); } } interface e { interface g { void f(); } // 多余的 "public",接口中所有的成员都是public,其中成员方法都是public abstract(可以有个默认方法),属性都是public static final,接口本身可以是default和public public interface h { void f(); } void g(); // 不能声明为private,理由同上 //! private interface i {} } public class nestinginterfaces { public class bimp implements a.b { public void f() {} } class cimp implements a.c { public void f() {} } //不能实现一个私有接口,除非在接口所属的类内部 //! class dimp implements a.d { //! public void f() {} //! } class eimp implements e { public void g() {} } class egimp implements e.g { public void f() {} } class eimp2 implements e { public void g() {} class eg implements e.g { public void f() {} } } public static void main(string[] args) { a a = new a(); // 无权获取 a.d: //! a.d ad = a.getd(); // a.d类型不能自动向下转换为实现类: //! a.dimp2 di2 = a.getd(); // 更不能调用私有接口的方法 //! a.getd().f(); // only another a can do anything with getd(): a a2 = new a(); a2.received(a.getd());//要使用d 只能把它交给有权使用它的对象 } } ///:~
总结:
static;
嵌套在类中的接口,可以被private,protected,default和public四种权限修饰;嵌套在接口中的接口,只能被public修饰;
参考:java编程思想
如对本文有疑问, 点击进行留言回复!!
解决idea中出现“illegal character U+200B” 问题
荐 为什么加了@Transactional注解,事务没有回滚?
Attribute ‘sklearn.linear_model._logistic.LogisticRegression.multi_class‘ must be explicitly set to
Java/Python实现 LeetCode剑指Offer 14-I.剪绳子(动态规划)
网友评论