package br.alura.curso.desconto;
import br.alura.curso.orcamento.Orcamento;
public interface Desconto {
**public Desconto proximo;**
public double desconta(Orcamento orcamento);
}
package br.alura.curso.desconto;
import br.alura.curso.orcamento.Orcamento;
public interface Desconto {
**public Desconto proximo;**
public double desconta(Orcamento orcamento);
}
Oi Ricardo, em Java não dá pra declarar atributos em uma interface, só assinatura de métodos (:
Oi Yuri, entendi isso, porém não sei como resolver. Eu tentei declarar um metodo que retorna o proximo. Mas mesmo assim não resolveu.
package br.alura.curso.desconto;
import br.alura.curso.orcamento.Orcamento;
public interface Desconto {
** public Desconto proximo();**
public double desconta(Orcamento orcamento);
}
Vou tentar dessa forma.
Consegui resolver.
package br.alura.curso.desconto;
import br.alura.curso.orcamento.Orcamento;
public interface Desconto {
public Desconto proximo(Desconto proximo);
public double desconta(Orcamento orcamento);
}
package br.alura.curso.desconto;
import br.alura.curso.orcamento.Orcamento;
public class descontoPorCincoItens implements Desconto{
private Desconto proximo;
public double desconta(Orcamento orcamento) {
if (orcamento.getItens().size() > 5) {
System.out.println("desconto por mais de cinco itens de 0.1%");
return orcamento.getValor() * 0.01;
}
System.out.println("sem desconto por mais de cindo itens ... proximo desconto");
return proximo.desconta(orcamento);
}
@Override
public Desconto proximo(Desconto proximo) {
return this.proximo = proximo;
}
}
Pode ignorar isso, não vi que tinha respondido acima! (:
Oi Ricardo, é que não entendi bem qual o problema que você está enfrentando.
O código que vc escreveu agora funciona, pq vc tirou o atributo e colocou uma assinatura de método. Agora o código java é válido.
Qual realmente o problema que está acontecendo?
Abraço!