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

[Projeto] Controle de dispositivos

**Eu só achava que eu tinha entendido o conceito de interface até esse exercicio, tem muitos ligar de desligar ai pq eu fui entendendo enquanto eu fazia o exercicio. Agora eu saquei que quando a interface, se implementa em mais de uma classe, ela passa a ter esse "Registro" da variavel e metodo que estamos utilizando, por isso quando eu tento dar um luz.desligar e logo em seguida um ar.desligar, ele me retorna que o ar já está desligado,doideira e incrivel ao mesmo tempo.
**

public class Main {
    static void main(String[] args) {
        Luz luz = new Luz();
        ArCondicionado ar = new ArCondicionado();
        luz.ligar();
        luz.ligar();
        luz.desligar();
        luz.desligar();

        ar.desligar();
        ar.desligar();
        ar.ligar();
        ar.desligar();
        luz.desligar();

    }
}
public class Luz implements Controlavel {
    private boolean ligado = false;

    public boolean isLigado() {
        return ligado;
    }

    @Override
    public void ligar() {
        if(ligado == false){
            ligado = true;
            System.out.println("Luz Ligada");
        } else {
            System.out.println("Luz já está ligada");
        }


    }

    @Override
    public void desligar() {
        if(ligado == true){
            ligado = false;
            System.out.println("Luz Desligada");
        } else {
            System.out.println("Luz já está desligada");
        }
    }
}
public class ArCondicionado implements Controlavel{
    private boolean ligado = false;
    @Override
    public void ligar() {
        if(ligado == false){
            ligado = true;
            System.out.println("Ar condicionado ligado");
        } else {
            System.out.println("Ar condicionado ja está ligado");
        }
    }

    @Override
    public void desligar() {
        if (ligado == true){
            ligado = false;
            System.out.println("Ar condicionado desligado");
        } else {
            System.out.println("Ar condicionado já desligado.");
        }
    }
}
public interface Controlavel {
    void ligar();
    void desligar();
}
2 respostas

......

solução!

Oi, Weid! Como vai?

Do jeito que você explicou, chama atenção como você percebeu na prática que a interface não guarda estado, e sim define um contrato, enquanto cada classe Luz e ArCondicionado controla seu próprio atributo ligado. Essa virada de chave costuma acontecer exatamente nesse tipo de teste repetindo ligar() e desligar(), e sua observação fez sentido.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abracos e bons estudos!