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

Dúvida no Ex. 1 da Aula 5 - Estados que variam e o State

Olá! Eu não consigo alterar o atributo estado da classe orçamento... Ao colocar Protected, não consigo alterá-lo em uma classe externa, o valor não deveria ser alterado para public?

public class Orcamento {

    protected double valor;
    private List<Item> list = new ArrayList<>();
    protected EstadoDoOrcamento estado;

    public void aprova(){
        estado.aprova(this);
    }
}

public interface EstadoDoOrcamento {

    public void aplicaDescontoExtra(Orcamento orcamento);

    public void aprova(Orcamento orcamento);
    public void reprova(Orcamento orcamento);
    public void finaliza(Orcamento orcamento);
}

public class EmAprovacao implements EstadoDoOrcamento{

    @Override
    public void aprova(Orcamento orcamento) {
        orcamento.estado = new Aprovado();
    }
}

O código acima simplesmente não compila, alguém pode me dizer onde estou errando?

4 respostas
solução!

Olá Leandro! Você não mandou todo seu código pois pelo que percebi tem classes faltando, mas um erro que pude perceber é que você não implementou todos os métodos da interface em sua classe EmAprovacao. Quando implementamos uma interface temos que implementar todos os métodos dessa interface. Quanto ao atributo protected, é possível altera-lo estando em outra classe, desde que essa classe seja do mesmo pacote. Se você tentar utilizar de uma classe que esteja em um pacote diferente, realmente não irá funcionar.

Espero ter ajudado. Bons Estudos!

Ah, agora entendi, o problema então não está em não ter implementado todos os métodos (não coloquei todos para não ficar muito grande aqui, mas estão todos implementados). Porém eu não testei ainda, eu fiz pacotes desta aula no meu projeto ficando assim... Aula1 - classes da aula 1 Aula2 - classes da aula 2 ...

Hum... Certo! O Problema ainda continua?

Agora sim, tudo certo! No mesmo pacote eles podem ser alterados.