/******类中嵌套接口*****/
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();
}
}
有意思的接口嵌套
最新推荐文章于 2023-02-19 09:45:16 发布