读书人

好玩儿的接口嵌套

发布时间: 2012-10-28 09:54:44 作者: rapoo

有意思的接口嵌套

/******类中嵌套接口*****/class A {interface B{//----------------Bvoid f();}public class BImp implements B{public void f() {}}private class BImp2 implements B{public void f() {}}public interface C{//public----------------Cvoid 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 ,这里默认也是publicvoid 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();}}

读书人网 >编程

热点推荐