viernes, 22 de mayo de 2020

Interfaces

Es un tipo de referencia que está estrechamente relacionado con una clase al tener múltiples similitudes con estas.

Definir una interfaz es muy parecido a definir una clase abstracta:

 
/* se usa la palabra reservada "interface" */
public interface InterfazDeJava{

}


Cuando define una interfaz se crea una referencia similar a una clase con la principal diferencia en que no define ninguna implementación de sus métodos. Además, presenta las siguientes características o restricciones.

  • Una interfaz no puede ser instanciada, por lo que no se define un constructor.
  • Los únicos campos permitidos en una definición de interfaz son constantes que se declaran tanto estáticas como finales.
  • Una interfaz define una API pública. Todos los métodos de una interfaz son implícitamente públicos, incluso si se omite el modificador público. Es un error definir un método protegido o privado en una interfaz.
  • Una interfaz no contiene implementación alguna. Todos los métodos de una interfaz son implícitamente abstractos, incluso si se omite el modificador abstracto.
  • Las interfaces pueden heredar de otras interfaces y pueden soportar herencia múltiple.
  • Son las clases que al implementar una interfaz mediante la palabra reservada "implements" implementan el código de los métodos declarados en una interfaz.
  • Una interfaz puede ser implementada en múltiples clases y una clase puede implementar múltiples interfaces.

Ejemplo de interfaz y su implementación en código

Código de la interfaz:

 public interface Calculadora {

 Float sumar(Float a, Float b);

 Float restar(Float a, Float b);

 Float multiplicar(Float a, Float b);

 Float dividir(Float a, Float b);

 String getMensaje();
}



Código de la clase:

 public class CalculadoraDecimal implements Calculadora {

 private String mensaje;

 public CalculadoraDecimal() {
 }

 @Override
 public Float sumar(Float a, Float b) {
  mensaje = null;
  return a + b;
 }

 @Override
 public Float restar(Float a, Float b) {
  mensaje = null;
  return a + b;
 }

 @Override
 public Float multiplicar(Float a, Float b) {
  mensaje = null;
  return a + b;
 }

 @Override
 public Float dividir(Float a, Float b) {
  if (b == 0) {
   mensaje = "No se puede dividir entre cero";
   return null;
  } else {
   mensaje = null;
   return a / b;
  }
 }

 @Override
 public String getMensaje() {
  return mensaje;
 }

}

Herencia en interfaces

Como se ha mencionado, las interfaces pueden heredar de otras interfaces sus métodos y constantes. Aquí las superinterfaces (similar a las superclases) deben colocarse luego de la palabra reservada "extends"

Herencia simple:


 
/* se usa la palabra reservada "extends " */
public interface InterfazHija extends InterfazPadre{

}

Herencia múltiple:


 
/* se usa la palabra reservada "extends " */
public interface InterfazHija extends InterfazPadre1, InterfazPadre2{

}


Fuentes:

  • Flanagan, D. (2002). JAVA IN A NUTSHELL Desktop Quick Reference (4a ed.). England: Pearson Education.


No hay comentarios:

Publicar un comentario