Java教程-Java嵌套接口

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{}
}