📜  Java中的嵌套接口

📅  最后修改于: 2020-04-05 15:42:49             🧑  作者: Mango

我们可以将接口声明为类或其他接口的成员。这样的接口称为成员接口或嵌套接口。
在类接口的任何其他类。在类中声明的此接口可以是默认接口,公共接口,受保护的接口而非私有接口。在实现接口时,我们将接口称为c_name.i_name,其中c_name是嵌套它的类的名称,而i_name是接口本身的名称。
让我们看下面的代码:

// Java程序展示嵌套接口
import java.util.*;
class Test
{
    interface Yes
    {
        void show();
    }
}
class Testing implements Test.Yes
{
    public void show()
    {
        System.out.println("接口方法");
    }
}
class A
{
    public static void main(String[] args)
    {
        Test.Yes obj;
        Testing t = new Testing();
        obj=t;
        obj.show();
    }
}

输出:

接口方法

上例中的访问说明符是默认的。我们也可以分配公共的,受保护的或私有的。以下是受保护的示例。在此特定示例中,如果将访问说明符更改为私有,则将得到编译器错误,因为派生类尝试访问它。

// Java展示protected的接口
import java.util.*;
class Test
{
    protected interface Yes
    {
        void show();
    }
}
class Testing implements Test.Yes
{
    public void show()
    {
        System.out.println("接口方法");
    }
}
class A
{
    public static void main(String[] args)
    {
        Test.Yes obj;
        Testing t = new Testing();
        obj=t;
        obj.show();
    }
}

输出:

接口方法

可以在一个接口中声明另一个接口。我们将接口称为i_name1.i_name2,其中i_name1是嵌套接口的名称,而i_name2是要实现的接口的名称。

// Java在接口中声明另一个接口
import Java.util.*;
interface Test
{
   interface Yes
   {
      void show();
   }
}
class Testing implements Test.Yes
{
   public void show()
   {
      System.out.println("接口方法");
   }
}
class A
{
   public static void main(String[] args)
   {
     Test.Yes obj;
     Testing t = new Testing();
     obj = t;
     obj.show();
   }
}

输出:

接口方法

注意:在上面的示例中,即使我们没有写成public,访问说明符也是public。如果尝试将接口的访问说明符更改为public以外的任何内容,则会出现编译器错误。请记住,接口成员只能是公共的。。

// Java程序展示接口不能用非公共的接口成员
import java.util.*;
interface Test
{
    protected interface Yes
    {
        void show();
    }
}
class Testing implements Test.Yes
{
    public void show()
    {
        System.out.println("接口方法");
    }
}
class A
{
    public static void main(String[] args)
    {
        Test.Yes obj;
        Testing t = new Testing();
        obj = t;
        obj.show();
    }
}

输出:

illegal combination of modifiers: public and protected
   protected interface Yes