Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Definición de Interfaces

Cuando una clase implementa una interfaz en Java, debe proporcionar implementaciones para todos los métodos que están definidos en esa interfaz. Esto asegura que la clase cumpla con el contrato establecido por la interfaz.

Por ejemplo, si tienes una interfaz llamada "Tributable" que define un método como getValorImpuesto(), cualquier clase que implemente esta interfaz debe proporcionar su propia versión de este método. Si no lo hace, la clase no podrá compilarse.

public interface Tributable {

    double getValorImpuesto();

}


public class Producto implements Tributable{

    private String nombre;
    private double valor;

    @Override
    public double getValorImpuesto() {
        return this.valor * 0.1;
    }

    //getters y setters
}


public class Servicio implements Tributable{

    private String descripcion;
    private double valor;
    private double cuotaJubilacion;

    @Override
    public double getValorImpuesto() {
        return this.valor * this.cuotaJubilacion / 100;
    }

    //getters y setters
}

Y de ser el caso se pueden asignar como atributos de un método, como se muestra en el siguiente código. Podemos asignarle cualquier objeto que implemente esa interfaz, ya sea un objeto de tipo "Servicio" o "Producto". En ambos casos, la "CalculadoraImpuesto" llamará al método implementado en la clase específica.


public class CalculadoraImpuestos {

    private double totalImpuesto = 0;

    public void calcularImpuesto(Tributable item) {
        this.totalImpuesto += item.getValorImpuesto();
    }

    public double getTotalImpuesto() {
      return this.totalImpuesto;
    }

}
1 respuesta

Hola Diego, espero que estés bien

¡Espero que estés bien! Entiendo que estás explorando cómo funcionan las interfaces en Java y cómo se pueden utilizar para definir un contrato que las clases deben seguir. Tu ejemplo es un excelente punto de partida para comprender el concepto.

Cuando una clase implementa una interfaz, como bien mencionaste, está obligada a proporcionar implementaciones para todos los métodos definidos en esa interfaz. Esto asegura que cualquier clase que implemente la interfaz cumpla con el "contrato" especificado por dicha interfaz. En tu ejemplo, tanto la clase Producto como la clase Servicio implementan la interfaz Tributable y proporcionan su propia lógica para el método getValorImpuesto().

La ventaja de usar interfaces es que permiten que diferentes clases sean tratadas de manera uniforme. Por ejemplo, en tu clase CalculadoraImpuestos, puedes pasar cualquier objeto que implemente la interfaz Tributable, y el método calcularImpuesto se encargará de llamar al método getValorImpuesto() correspondiente, ya sea que el objeto sea de tipo Producto o Servicio.

Esto es una demostración clara de polimorfismo, donde puedes tratar objetos de diferentes clases de manera uniforme siempre y cuando implementen la misma interfaz. Esto hace que tu código sea más flexible y fácil de extender, ya que puedes agregar nuevas clases que implementen la interfaz sin necesidad de cambiar el código que las utiliza.

Espero que este ejemplo te haya ayudado a entender mejor cómo funcionan las interfaces en Java y cómo pueden ser útiles en el diseño de tu aplicación.

¡Espero haber ayudado y buenos estudios!