15. Interfaces y clases internas en Java

Java es un lenguaje de programación orientado a objetos que ofrece varias características para crear software robusto y flexible. Entre estos recursos, las interfaces y las clases internas son fundamentales para crear sistemas complejos y bien estructurados. En este capítulo, nos sumergiremos en el mundo de las interfaces y clases internas en Java, explorando cómo se pueden utilizar para mejorar el diseño de su software.

¿Qué son las interfaces?

En Java, una interfaz es un tipo de referencia, similar a una clase, que solo puede contener constantes, métodos de firma, métodos predeterminados, métodos estáticos y tipos anidados. Las interfaces no pueden contener constructores ni métodos sin firma (es decir, métodos que contienen un cuerpo).

Las interfaces se utilizan para definir un contrato que las clases pueden implementar. Esto significa que una clase que implementa una interfaz debe proporcionar implementaciones concretas para todos los métodos abstractos declarados en la interfaz. Una clase puede implementar múltiples interfaces, separando responsabilidades y facilitando el mantenimiento y la extensibilidad del código.


interfaz pública Vehículo {
    vacío inicioMotor();
    vacío detenerEngine();
    doble getFuelCapacity();
}

Una vez definida una interfaz, una o más clases pueden implementarla:


clase pública Coche implementa Vehículo {
    @Anular
    motor de inicio público vacío() {
        // Implementación específica del automóvil
    }

    @Anular
    paradaEngine público vacío() {
        // Implementación específica del automóvil
    }

    @Anular
    público doble getFuelCapacity() {
        // Implementación específica del automóvil
        devolver 50,0;
    }
}

Clases internas

Las clases internas, también conocidas como clases anidadas, son clases definidas dentro de otra clase. Son útiles cuando una clase debe estar vinculada a otra clase, o cuando el diseño agrupa dos clases que solo se usarán juntas.

Hay cuatro tipos de clases internas:

  • Clase Interna Regular: Es una clase no estática definida en el cuerpo de otra clase.
  • Clase interna estática: También conocida como clase anidada estática, es una clase estática definida en el cuerpo de otra clase.
  • Clase interna local: Es una clase definida dentro de un bloque de código, como un método.
  • Clase interna anónima: Es una clase sin nombre definida y instanciada en una sola expresión.

Las clases internas pueden acceder a los miembros de la clase externa, incluidos los miembros privados. Esto permite un acoplamiento más estrecho entre clases y puede conducir a un diseño más cohesivo.


clase pública clase exterior {
    private String secret = "El tiempo es una ilusión.";

    clase Clase Interna {
        public void revelarSecret() {
            System.out.println("El secreto es: " + secreto);
        }
    }
}

En el ejemplo anterior, InnerClass puede acceder al miembro privado secret de OuterClass.

Interfaces y clases internas en acción

Las interfaces y clases internas ofrecen muchos beneficios cuando se usan correctamente. Por ejemplo, podemos usar interfaces para definir un conjunto de métodos que múltiples clases internas deben implementar, permitiendo que la clase externa interactúe con sus clases internas de manera uniforme.


clase pública ActionExecutor {
    acción de interfaz privada {
        ejecución nula();
    }

    clase PrimeraAcción implementa Acción {
        @Anular
        ejecución nula pública() {
            // Primera acción
        }
    }

    clase SecondAction implementa Acción {
        @Anular
        ejecución nula pública() {
            // Segunda acción
        }
    }

    acciones de rendimiento públicas vacías () {
        nueva PrimeraAcción().execute();
        nueva SegundaAcción().execute();
    }
}

En este ejemplo, la clase ActionExecutor tiene dos clases internas que implementan la interfaz Action. El método performActions crea instancias de ambas clases internas y realiza sus acciones. Esto demuestra un uso práctico de interfaces y clases internas para organizar y realizar un conjunto de acciones relacionadas.

Conclusión

Las interfaces y las clases internas son herramientas poderosas en el arsenal de cualquier programador de Java. Las interfaces le permiten definir contratos que pueden ser implementados por múltiples clases, promoviendo la reutilización y la flexibilidad del código. Las clases internas le permiten agrupar lógicamente clases que solo se usan juntas, lo que puede simplificar su código y aumentar la legibilidad.

Al diseñar su software, considere dónde se pueden ubicar las interfaces y las clases internas.aplicado para mejorar la estructura y claridad de su código. Comprenda las diferencias entre los tipos de clases internas y cuándo usar cada una. Recuerde que un buen diseño orientado a objetos no se trata sólo de utilizar funciones avanzadas del lenguaje, sino también de crear código que sea fácil de entender, mantener y ampliar.

Con este conocimiento, estará bien equipado para avanzar en su viaje de aprendizaje de Java y desarrollar software que sea sólido, eficiente y fácil de usar.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones describe mejor el uso de interfaces en Java?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Enumeraciones y anotaciones.

Siguiente página del libro electrónico gratuito:

101Enumeraciones y anotaciones.

5 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.