`
lihengzkj
  • 浏览: 44232 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

有意思的接口嵌套

阅读更多
/******类中嵌套接口*****/
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();
	}
}




分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    java源码包2

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    java源码包3

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    java源码包4

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例 各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例 各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的...

    JAVA上百实例源码以及开源项目

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    JAVA上百实例源码以及开源项目源代码

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    jquery插件使用方法大全

    延迟对象 延迟对象(Deferred Object,jQuery.Deferred对象)是一个可链接的(chainable)实用工具对象,实现了Promise接口,可以在回调队列中注册多个回调、调用回调队列并转发任何同步/异步函数的成败状态。...

Global site tag (gtag.js) - Google Analytics