Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Curiosidade exercício 1 Interface

Ola Pessoal nao entendi uma coisa, no codigo abaixo eu criei 2 retangulos, um foi criado da classe Retangulo, e o outro criei de AreaCalculavel como sugere o exercicio, qual a diferença de criar assim :

Retangulo retangulo = new Retangulo(10,5);

ou assim:

AreaCalculavel retangulo2 = new Retangulo(3,2);

Codigo completo:

package Interfaces;

public interface AreaCalculavel {
    double calcularArea();
}
package Interfaces;

public class Retangulo implements AreaCalculavel {
    private int altura;
    private int largura;

    public Retangulo (int altura, int largura) {
        this.altura = altura;
        this.largura = largura;
    }

    @Override
    public double calcularArea() {
        return this.altura * this.largura;
    }
}
package Interfaces;

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

        //quadrado criado de Quadrado
        Quadrado quadrado = new Quadrado(5);
        System.out.println("Area total de :"+quadrado.calcularArea());

        //Retangulo criado de Retangulo
        Retangulo retangulo = new Retangulo(10,5);
        System.out.println("Area do Retangulo: "+retangulo.calcularArea());

        //retangulo criado de AreaCalculavel
        AreaCalculavel retangulo2 = new Retangulo(3,2);
        System.out.println("Area do retangulo: "+retangulo2.calcularArea());

        //circulo
        Circulo circulo = new Circulo(10.5);
        System.out.println("Area do circulo: "+circulo.calcularArea());
    }
}
3 respostas

Olá, Natan.

A diferença é que a variável inicializada como AreaCalculavel pode receber qualquer objeto que implemente a interface AreaCalculavel. Essa prática facilita, caso necessário, a substituição de construtores de objetos que implementam uma mesma classe ou interface, visto que a troca só precisa ser feita no lado direito.

solução!

Nenhuma, só que quando você cria a partir da interface você tem certeza que o retangulo2 implementa a Interface AreaCalculavel. No retangulo1 você não necessariamente saberia que ele implementa alguma interface,só isso, mas vai do desenvolvedor como iria criar.

Obrigado a todos, acho que entendi , praticamente é um modo de mostrar que aquele objeto esta sendo implementado.