Interfaz anidada en Java

Podemos declarar interfaces como miembros de una clase o de otra interfaz. Dicha interfaz se denomina interfaz miembro o interfaz anidada.

Interfaz en una clase Las
interfaces (o clases) solo pueden tener especificadores de acceso públicos y predeterminados cuando se declaran fuera de cualquier otra clase (consulte esto para obtener más detalles). Esta interfaz declarada en una clase puede ser predeterminada, pública, protegida, no privada. Mientras implementamos la interfaz, mencionamos la interfaz como c_name.i_name donde c_name es el nombre de la clase en la que está anidado y i_name es el nombre de la interfaz en sí.
Echemos un vistazo al siguiente código: –

// Java program to demonstrate working of
// interface inside a class.
import java.util.*;
class Test
{
    interface Yes
    {
        void show();
    }
}
  
class Testing implements Test.Yes
{
    public void show()
    {
        System.out.println("show method of interface");
    }
}
  
class A
{
    public static void main(String[] args)
    {
        Test.Yes obj;
        Testing t = new Testing();
        obj=t;
        obj.show();
    }
}
show method of interface 

El especificador de acceso en el ejemplo anterior es predeterminado. Podemos asignar público, protegido o privado también. A continuación se muestra un ejemplo de protected. En este ejemplo particular, si cambiamos el especificador de acceso a privado, obtenemos un error del compilador porque una clase derivada intenta acceder a él.

// Java program to demonstrate protected 
// specifier for nested interface.
import java.util.*;
class Test
{
    protected interface Yes
    {
        void show();
    }
}
  
class Testing implements Test.Yes
{
    public void show()
    {
        System.out.println("show method of interface");
    }
}
  
class A
{
    public static void main(String[] args)
    {
        Test.Yes obj;
        Testing t = new Testing();
        obj=t;
        obj.show();
    }
}
show method of interface 

Interfaz en otra interfaz
Una interfaz también se puede declarar dentro de otra interfaz. Mencionamos la interfaz como i_name1.i_name2 donde i_name1 es el nombre de la interfaz en la que está anidado e i_name2 es el nombre de la interfaz a implementar.

// Java program to demonstrate working of 
// interface inside another interface.
import java.util.*;
interface Test
{
   interface Yes
   {
      void show();    
   }
}
  
class Testing implements Test.Yes
{
   public void show()
   {
      System.out.println("show method of interface");
   } 
} 
  
class A
{
   public static void main(String[] args)
   {
     Test.Yes obj;
     Testing t = new Testing();
     obj = t;
     obj.show();
   } 
}
show method of interface 

Nota: En el ejemplo anterior, el especificador de acceso es public incluso si no hemos escrito public. Si intentamos cambiar el especificador de acceso de la interfaz a algo que no sea público, obtenemos un error del compilador. Recuerde, los miembros de la interfaz solo pueden ser públicos. .

// Java program to demonstrate an interface cannot
// have non-public member interface.
import java.util.*;
interface Test
{
    protected interface Yes
    {
        void show();
    }
}
  
class Testing implements Test.Yes
{
    public void show()
    {
        System.out.println("show method of interface");
    }
}
  
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

Este artículo es una contribución de Twinkle Tyagi . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *