猿教程 Logo

Java 内部接口

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

在另一个接口或类中声明的接口称为内部接口。 内部接口用于对相关接口进行分组,以便它们易于维护。内部接口必须由外部接口或类引用。 它不能直接访问。


内部接口的要记住的点

有一些点应该由java程序员记住。

  • 如果内部接口在接口中声明,则它必须是public的,但是如果在类中声明,它可以具有任何访问修饰符。

  • 内部接口隐式声明为静态。


在接口中声明的内部接口的语法


interface interface_name{
 ...
 interface nested_interface_name{
  ...
 }
}

在类中声明的内部接口的语法


class class_name{
 ...
 interface nested_interface_name{
  ...
 }
}

在接口中声明的内部接口的示例

在这个例子中,我们将学习如何声明内部接口以及如何访问它。

相关实例:

interface Showable{
  void show();
  interface Message{
   void msg();
  }
}
class TestNestedInterface1 implements Showable.Message{
 public void msg(){System.out.println("Hello nested interface");}

 public static void main(String args[]){
  Showable.Message message=new TestNestedInterface1();//upcasting here
  message.msg();
 }
}

运行结果:

hello nested interface

正如你在上面的例子中可以看到的,我们正在通过其外部接口Showable接受Message接口,因为它不能被直接访问。 它就像almirah在房间里面,我们不能直接访问almirah,因为我们必须先进入房间。 在收集帧中,sun微系统提供了一个嵌套接口Entry。 Entry是Map的子接口,即由Map.Entry访问。


Java编译器为内部接口Message生成的内部代码

java编译器在内部创建公共和静态接口,如下所示:

public static interface Showable$Message
  {
    public abstract void msg();
  }

在类中声明的内部接口的示例

让我们看看如何在类中定义一个接口,以及如何访问它。

class A{
  interface Message{
   void msg();
  }
}

class TestNestedInterface2 implements A.Message{
 public void msg(){System.out.println("Hello nested interface");}

 public static void main(String args[]){
  A.Message message=new TestNestedInterface2();//upcasting here
  message.msg();
 }
}

运行结果:

hello nested interface

我们可以在接口中定义一个类吗?

是的,如果我们在接口中定义一个类,java编译器会创建一个静态内部类。 让我们看看如何在界面中定义一个类:

相关实例:

interface M{
  class A{}
}
阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/java-nested-interface.html