java接口嵌套【Z】

在Java语言中,接口可以嵌套在类或其它接口中。由于Java中interface内是不可以嵌套class的,所以接口的嵌套就共有两种方式:class嵌套interface、interface嵌套interface。

1. class嵌套interface
这时接口可以是public,private和package的。重点在private上,被定义为私有的接口只能在接口所在的类被实现。可以被实现为 public的类也可以被实现为private的类。当被实现为public时,只能在被自身所在的类内部使用。只能够实现接口中的方法,在外部不能像正 常类那样上传为接口类型。

2. interface嵌套interface
由于接口的元素必须是public的,所以被嵌套的接口自动就是public的,而不能定义成private的。在实现这种嵌套时,不必实现被嵌套的接口。

程序示例(摘抄改编自《Thinking in Java》):

class  A  {
    
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();
    }

}


public   class  NestingInterfaces  {
    
public   static   void  main(String[] args)  {
        A a 
=   new  A();
        
// The type A.D is not visible
        
// ! A.D ad = a.getD();
        
// Cannot convert from A.D to A.DImp2
        
// ! A.DImp2 di2 = a.getD();
        
// The type A.D is not visible
        
// ! a.getD().f();        
        A a2  =   new  A();
        a2.receiveD(a.getD());
    }

}


其中语句A.D ad = a.getD()和a.getD().f()的编译错误是因为D是A的私有接口,不能在外部被访问。语句A.DImp2 di2 = a.getD()的错误是因为getD方法的返回类型为D,不能自动向下转型为DImp2类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值