在Java语言中,接口可以嵌套在类或其它接口中。由于Java中interface内是不可以嵌套class的,所以Java嵌套接口就共有两种方式:class嵌套interface、interface嵌套interface。
1、接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
2、接口中的方法默认都是 public abstract 类型的。
3、接口默认也是abstract的的:public abstract interface xx ===public interface xx
public interface AreaInterface{
double pai=Math.PI;
double area();
interface Neibujiekou{
viod menthod();
}
}
public abstract interface AreaInterface{
public static final double pai = Math,.PI;
public abstract double area();
}
4、 interface嵌套interface
由于接口的元素必须是public的,所以被嵌套的接口自动就是public的,而不能定义成private的。在实现这种嵌套时,不必实现被嵌套的接口。
classCircle implements AreaInterface{
只需实现area();不用实现menthod();
}
class Circle implements AreaInterface,AreaInterface.Neibujiekou{
两个方法都要实现
}
class A {
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();
}
}
public class NestingInterfaces {
public static void main(String[] args) {
A a = new A();
//The type A.D is not visible
//! A.D ad = a.getD();
//Cannot convert from A.D to A.DImp2
//! A.DImp2 di2 = a.getD();
//The type A.D is not visible
//! a.getD().f();
A a2 = new A();
a2.receiveD(a.getD());
}
}
其中语句A.D ad = a.getD()和a.getD().f()的编译错误是因为D是A的私有接口,不能在外部被访问。语句A.DImp2 di2 = a.getD()的错误是因为getD方法的返回类型为D,不能自动向下转型为DImp2类型。
5、class嵌套interface
这时接口可以是public,private和package的。重点在private上,被定义为私有的接口只能在接口所在的类被实现。可以被实现为public的类也可以被实现为private的类。当被实现为public时,只能在被自身所在的类内部使用。只能够实现接口中的方法,在外部不能像正常类那样上传为接口类型。
总结:java接口嵌套事实上是指:Java中接口可以嵌套在类中,也可以嵌套在接口中,处于与成员变量和方法平级的位置;不论定义在接口,还是类中,java接口嵌套默认强制是 static;嵌套在类中的接口,可以被private,protected,default和public四种权限修饰;嵌套在接口中的接口,只能被public修饰;在实现Java接口的过程中,我们不需要实现嵌套在其内部的任何接口。并且private接口是不能在定义它的类之外被实现。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习