Duvida simples poo

2 respostas
D

alguem sabe pq esse codigo não entra na condição da classe flash?
se eu colocar o metodo “ligar” na classe flash funciona normalmente, ou quando eu tbm coloco f.flashh(); no lugar do t.flashh();
vai de boa, porem quero que quando eu ligue a classe tela passe para a flash, que não acontece
é uma duvida simples mesmo mas eu prefiro aprender sempre com os erros, p.s me desculpem se o codigo não apareceu identado no site, vo procurar sobre como fazer as postagens aqui

main principal:

package celular;

public class Celular {

    public static void main(String[] args) {
        Tela t = new Tela();
        Flash f = new Flash();
        
        t.ligar();
        System.out.println(f.flashh());
    }
    
}

classe flash

package celular;

public class Flash extends Tela{
   
 public String flashh(){
        if(this.getTelaLigada()){
          return "Flash Ligado";
        }
        else {
            return "Flash Desligado " + telaLigada;
        }
 }

classe tela

package celular;

public class Tela {
public boolean telaLigada;

public void ligar(){

this.setTelaLigada(true);

}
public boolean getTelaLigada() {
    return telaLigada;
}

public void setTelaLigada(boolean telaLigada) {
    this.telaLigada = telaLigada;
}

}

2 Respostas

matheus.cirillo

Sua classe Flash está herdando os atributos de Tela, no entando, quando você aciona o método t.ligar();, você está se referindo a instância da classe Tela.

Note que isso:

Tela t = new Tela();

É diferente disso:

Flash f = new Flash();

Para resolver, você precisa tornar o atributo telaLigada ‘compartilhado’ entre todos os objetos que herdam da classe Tela.
A palavra-chave static resolve seu problema:

Mude seu atributo de public boolean telaLigada; para public static boolean telaLigada;
Atributos estáticos pertencem a classe, e não a cada objeto.

F
Tela telaFlash = new Flash();
telaFlash.ligar();
System.out.print(telaFlash.flash());
Criado 6 de janeiro de 2017
Ultima resposta 6 de jan. de 2017
Respostas 2
Participantes 3