1
resposta

Duvida na implementação de interface

Resolvi o primeiro desafio da seguinte maneira:

public class Principal { public static void main(String[] args) {

    ConversorMoeda converter = new ConversorMoeda();
    converter.setDolar(50);

    converter.setReal(converter.converterDolarReal());

    System.out.println("Na cotação atual, a conversão de U$"+ converter.getDolar() + " fica R$" + converter.getReal());
}

}

public class ConversorMoeda implements ConversaoFinanceira {

private double dolar;
private double real;

public double getDolar() {
    return dolar;
}

public void setDolar(double dolar) {
    this.dolar = dolar;
}

public double getReal() {
    return real;
}

public void setReal(double real) {
    this.real = real;
}

@Override
public double converterDolarReal() {
    return real = dolar * 5.14;
}

}

public interface ConversaoFinanceira {

double converterDolarReal();

}

Está correta a aplicação da interface?

Se sim, pra mim ela parece ser a mesma coisa que eu criar um função em uma classe e defini-la como herança pra outra classe... acho que não consegui ainda separar de uma forma clara uma interface de uma Herança...

1 resposta

Olá Maikon! Tudo certo?

Você fez um ótimo trabalho implementando a interface ConversaoFinanceira e a classe ConversorMoeda. Sua implementação está correta e funcional. No entanto, é compreensível a sua dúvida sobre a diferença entre interfaces e herança em Java, então vamos esclarecer isso.

  1. Diferença entre Interface e Herança

    Herança:

    • A herança é usada quando uma classe (subclasse) herda os atributos e métodos de outra classe (superclasse).
    • A subclasse pode ter apenas uma superclasse (herança simples).
    • A herança é uma relação "é um" (ex.: um Cachorro é um Animal).

    Interface:

    • Uma interface é um contrato que uma classe pode implementar.
    • Uma classe pode implementar várias interfaces.
    • A interface define métodos que a classe deve implementar, mas não fornece a implementação desses métodos.
    • É uma relação "pode fazer" (ex.: um Cachorro pode Latir e pode Correr).
  2. Exemplo Prático: Vamos imaginar um cenário onde temos diferentes tipos de conversores. Podemos ter uma interface comum para todos eles:

    public interface ConversaoFinanceira {
        double converterDolarReal();
        double converterEuroReal();
    }
    

    Agora, sua classe ConversorMoeda pode implementar essa interface:

    public class ConversorMoeda implements ConversaoFinanceira {
    
        private double dolar;
        private double real;
        private double euro;
    
        public double getDolar() {
            return dolar;
        }
    
        public void setDolar(double dolar) {
            this.dolar = dolar;
        }
    
        public double getReal() {
            return real;
        }
    
        public void setReal(double real) {
            this.real = real;
        }
    
        public double getEuro() {
            return euro;
        }
    
        public void setEuro(double euro) {
            this.euro = euro;
        }
    
        @Override
        public double converterDolarReal() {
            return dolar * 5.14;
        }
    
        @Override
        public double converterEuroReal() {
            return euro * 6.14;
        }
    }
    

    Neste exemplo, a classe ConversorMoeda implementa a interface ConversaoFinanceira e fornece a implementação dos métodos converterDolarReal e converterEuroReal.

  3. Vantagens das Interfaces

    • Flexibilidade: Permite que uma classe implemente múltiplas interfaces, o que não é possível com herança.
    • Polimorfismo: Facilita o uso de polimorfismo, onde diferentes classes podem ser tratadas da mesma forma através de uma interface comum.
    • Desacoplamento: Ajuda a desacoplar o código, facilitando a manutenção e a extensão.

Espero que isso ajude a esclarecer a diferença entre interfaces e herança e como usá-las de forma eficaz no seu código.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.