首页 > hot资讯 > Java嵌套接口

Java嵌套接口

更新时间:2020-10-29 17:42 浏览44次 来源:动力节点

  

在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接口是不能在定义它的类之外被实现。


热门课程推荐

全部班型支持免费试学

动力节点在线报名表(此信息已加密,请放心填写)

返回顶部