有意思的接口嵌套


/******类中嵌套接口*****/
class A {
interface B{//----------------B
void f();
}
public class BImp implements B{
public void f() {}
}
private class BImp2 implements B{
public void f() {}
}
public interface C{//public----------------C
void f();
}
class CImp implements C{
public void f() {}
}
private class CImp2 implements C{
public void f() {}
}
private interface D{//private----------------D 像D这种private接口不能再这个类之外实现。
void f();
}
private class DImp implements D{//private类
public void f() {}
}
public class DImp2 implements D{//public类
public void f() {System.out.println("ooooooooo");}
}
public D getD (){
return new DImp2();
}
private D dRef;
public void receiveD(D d){
dRef = d;
dRef.f();
}
}
/*******接口中嵌套接口********/
interface E{
interface G{//嵌套的接口必须是public ,这里默认也是public
void f();
}
public interface H{
void f();
}
void g();
}
/******************/
public class NesingInterfaces{
public class BImp implements A.B{
public void f() {}
}
class CImp implements A.C{
public void f(){}
}
//public class DImp implements A.D{} --私有的接口不能实现,即没有访问的权限
class EImp implements E{//实现嵌套接口的时候并不需要实现嵌套在内部的接口。
public void g(){}
}
class EGImp implements E.G{
public void f(){}
}
class EGImp2 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 ad = a.getD(); --D接口是私有的,所以不能直接访问。A.D是行不通的。
//A.DImp2 adi = a.getD(); --返回的是接口D,而A.DImp2是接口D的实现类。向下转型要强转。
//a.getD().f();//
//A.D d ;---由于接口D是私有的,所以以上两种访问方式都是不行的。
a.receiveD(a.getD());//像正常的get/set方法那样访问的话就没有问题。
A.DImp2 ad2 = a.new DImp2();
ad2.f();
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值