Java嵌套接口

在另一个接口或类内部声明的接口称为嵌套接口。嵌套接口用于将相关接口分组,以便更容易维护。嵌套接口必须由外部接口或类引用。无法直接访问嵌套接口。

关于嵌套接口需要记住的要点

以下是Java程序员应记住的一些要点。

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

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

interface interface_name{  
 ...  
 interface nested_interface_name{  

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

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

在接口内部声明的嵌套接口的示例

在此示例中,我们将学习如何声明嵌套接口以及如何访问它。

TestNestedInterface1.java

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();//在这里向上转换
  message.msg();  
 }  
}  

输出:

hello nested interface

如上例所示,我们通过其外部接口Showable访问Message接口,因为它不能直接访问。就像房间内的衣柜一样,我们不能直接访问衣柜,因为我们必须先进入房间。在集合框架中,Sun Microsystems提供了一个名为Entry的嵌套接口。Entry是Map的子接口,通过Map.Entry访问。

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

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

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

在类内部声明的嵌套接口的示例

让我们看看如何在类内部定义接口以及如何访问它。

TestNestedInterface2.java

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();//在这里向上转换  
  message.msg();  
 }  
}  

输出:

hello nested interface

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

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

interface M{  
  class A{}  
}  

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想