📜  Java嵌套接口

📅  最后修改于: 2020-09-26 12:45:46             🧑  作者: Mango

Java嵌套接口

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

嵌套接口要记住的要点

这里给出了一些Java程序员应该记住的观点。

  • 如果嵌套接口在接口内部声明,则它必须是公共的,但如果在类中声明,则它可以具有任何访问修饰符。
  • 嵌套接口被隐式声明为静态。

在接口内声明的嵌套接口的语法

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();
 }
}

Output:hello nested interface

如您在上面的示例中看到的,我们通过其外部接口Showable来访问Message接口,因为它不能直接访问。就像房间内的almirah,我们不能直接进入almirah,因为我们必须先进入房间。在集合框架中,sun microsystem提供了一个嵌套的接口Entry。 Entry是Map的子接口,即可以通过Map.Entry访问。

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

Java编译器在内部创建public和static接口,如下所示:


  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();
 }
}

Output:hello nested interface

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

是的,如果我们在接口内定义一个类,则Java编译器会创建一个静态嵌套类。让我们看看如何在接口内定义一个类:

interface M{
  class A{}
}