Java之嵌套接口

本文探讨了Java中的嵌套接口概念,强调了接口可以嵌套在类或其它接口内部,并详细阐述了嵌套接口的特性:接口可以被声明为private,但嵌套在接口内的接口默认为public;主函数中只能创建顶级类的对象,无法直接创建嵌套类对象;实现接口时,无需实现嵌套接口,且private接口不能在外部实现。

在学习接口的过程中,这次的嵌套接口对接口的知识覆盖的更加全面,所以在这为读者们进行讲解。

嵌套接口

**:指接口可以嵌套在类或其他的接口中。但凡事的存在必有其必然性,也存在一定的规则约束。接下来我们通过以下代码进行分析得出我们应该掌握的一些规则。

package lession08;
class A{
	interface B{
		void f();
	}
	public class BImp implements B{
		public void f() {}
	}
	private class BImp2 implements B{
		public void f() {}
	}
	public interface C{
		void f();
	}
	class CImp implements C{
		public void f() {}
	}
	private class CImp2 implements C {
		public void f() {}
	}
	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();
	}	
}
interface E{
	interface G{
		void f();
	}
	//Redundant "public"
	public interface H{
		void f();
	}
	void g();
	//can't be private within an interface:
	//!private interface I{}
}
public class NestingInterfaces {
	public class BImp implements A.B{
		public void f() {}
	}
	class CImp implements A.C{
		public void f() {}
	}
	class EImp implements E{
		public void g() {}
	}
	class EGImp implements E.G{
		public void f() {}
	}
	class EImp2 implements E{
		public void g() {}
		class EG implements E.G{
			public void f() {}
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		A a=new A();
		A a2=new A();
		a2.receiveD(a.getD());
	}
}

首先要说明的是该代码是无任何输出的。
通过如上我们看到,
(1)接口是可以被视线被private的,但是嵌套在一个接口当中的接口会自动成为public,不能将其声明为public。
(2)在主函数当中创建对象的时候,只能为大类或者说一级类,而子嵌套当中的类不可以去用来直接创建对象。
(3)在实现接口的过程中,我们不需要实现嵌套在其内部的任何接口。并且private接口是不能在定义它的类之外被实现。

请大家批评指正,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值